Vue2(一)

目錄

◆ 前端工程化
◆ webpack 的基本使用
◆ webpack 中的插件
◆ webpack 中的 loader
◆ 打包發(fā)布
◆ Source Map

一 前端工程化
  1. 小白眼中的前端開發(fā) vs 實際的前端開發(fā)

layui: https://layui.gitee.io/v2/docs/element/nav.html

  1. 什么是前端工程化
  1. 前端工程化的解決方案

早期的前端工程化解決方案:
? grunt( https://www.gruntjs.net/
? gulp( https://www.gulpjs.com.cn/

目前主流的前端工程化解決方案:
? webpack( https://www.webpackjs.com/
? parcel( https://zh.parceljs.org/ )// 開發(fā)第三方包用的多

二 webpack 的基本使用
  1. 什么是 webpack
  1. 創(chuàng)建列表隔行變色項目
  1. 在項目中安裝 webpack
  • 在終端運(yùn)行如下的命令,安裝 webpack 相關(guān)的兩個包:
    npm install webpack@5.42.1 webpack-cli@4.7.2 -D
  1. 在項目中配置 webpack
  • 4.1 mode 的可選值
  • 4.2 webpack.config.js 文件的作用
  • 4.3 webpack 中的默認(rèn)約定

在 webpack 4.x 和 5.x 的版本中,有如下的默認(rèn)約定:
① 默認(rèn)的打包入口文件為 src -> index.js
② 默認(rèn)的輸出文件路徑為 dist -> main.js
注意:可以在 webpack.config.js 中修改打包的默認(rèn)約定

  • 4.4 自定義打包的入口與出口
三 webpack 中的插件
  1. webpack 插件的作用
  1. webpack-dev-server

webpack-dev-server 可以讓 webpack 監(jiān)聽項目源代碼的變化,從而進(jìn)行自動打包構(gòu)建。

  • 2.1 安裝 webpack-dev-server

運(yùn)行如下的命令,即可在項目中安裝此插件:
npm install webpack-dev-server@3.11.2 -D

  • 2.2 配置 webpack-dev-server
    ① 修改 package.json -> scripts 中的 dev 命令如下:


② 再次運(yùn)行 npm run dev 命令,重新進(jìn)行項目的打包
③ 在瀏覽器中訪問 http://localhost:8080 地址,查看自動打包效果
注意:webpack-dev-server 會啟動一個實時打包的 http 服務(wù)器

  • 2.3 打包生成的文件哪兒去了?
    ① 不配置 webpack-dev-server 的情況下,webpack 打包生成的文件,會存放到實際的物理磁盤上
    ? 嚴(yán)格遵守開發(fā)者在 webpack.config.js 中指定配置
    ? 根據(jù) output 節(jié)點指定路徑進(jìn)行存放
    ② 配置了 webpack-dev-server 之后,打包生成的文件存放到了內(nèi)存中
    ? 不再根據(jù) output 節(jié)點指定的路徑,存放到實際的物理磁盤上
    ? 提高了實時打包輸出的性能,因為內(nèi)存比物理磁盤速度快很多

  • 2.4 生成到內(nèi)存中的文件該如何訪問?
    webpack-dev-server 生成到內(nèi)存中的文件,默認(rèn)放到了項目的根目錄中,而且是虛擬的、不可見的。
    ? 可以直接用 / 表示項目根目錄,后面跟上要訪問的文件名稱,即可訪問內(nèi)存中的文件
    ? 例如 /bundle.js 就表示要訪問 webpack-dev-server 生成到內(nèi)存中的 bundle.js 文件

  1. html-webpack-plugin

html-webpack-plugin 是 webpack 中的 HTML 插件,可以通過此插件自定制 index.html 頁面的內(nèi)容。
需求:通過 html-webpack-plugin 插件,將 src 目錄下的 index.html 首頁,復(fù)制到項目根目錄中一份!

  • 3.1 安裝 html-webpack-plugin
    運(yùn)行如下的命令,即可在項目中安裝此插件:
    npm install html-webpack-plugin@5.3.2 -D

  • 3.2 配置 html-webpack-plugin

  • 3.3 解惑 html-webpack-plugin
    ① 通過 HTML 插件復(fù)制到項目根目錄中的 index.html 頁面,也被放到了內(nèi)存中
    ② HTML 插件在生成的 index.html 頁面,自動注入了打包的 bundle.js 文件
  1. devServer 節(jié)點

在 webpack.config.js 配置文件中,可以通過 devServer 節(jié)點對 webpack-dev-server 插件進(jìn)行更多的配置,
示例代碼如下:

注意:凡是修改了 webpack.config.js 配置文件,或修改了 package.json 配置文件,必須重啟實時打包的服
務(wù)器,否則最新的配置文件無法生效!

四 webpack 中的 loader
  1. loader 概述

在實際開發(fā)過程中,webpack 默認(rèn)只能打包處理以 .js 后綴名結(jié)尾的模塊。其他非 .js 后綴名結(jié)尾的模塊,
webpack 默認(rèn)處理不了,需要調(diào)用 loader 加載器才可以正常打包,否則會報錯!

loader 加載器的作用:協(xié)助 webpack 打包處理特定的文件模塊。比如:
? css-loader 可以打包處理 .css 相關(guān)的文件
? less-loader 可以打包處理 .less 相關(guān)的文件
? babel-loader 可以打包處理 webpack 無法處理的高級 JS 語法

  1. loader 的調(diào)用過程
  1. 打包處理 css 文件

① 運(yùn)行 npm i style-loader@3.0.0 css-loader@5.2.6 -D 命令,安裝處理 css 文件的 loader
② 在 webpack.config.js 的 module -> rules 數(shù)組中,添加 loader 規(guī)則如下:

其中,test 表示匹配的文件類型, use 表示對應(yīng)要調(diào)用的 loader
注意:
? use 數(shù)組中指定的 loader 順序是固定的
? 多個 loader 的調(diào)用順序是:從后往前調(diào)用

  1. 打包處理 less 文件

① 運(yùn)行 npm i less-loader@10.0.1 less@4.1.1 -D 命令
② 在 webpack.config.js 的 module -> rules 數(shù)組中,添加 loader 規(guī)則如下:

  1. 打包處理樣式表中與 url 路徑相關(guān)的文件

① 運(yùn)行 npm i url-loader@4.1.1 file-loader@6.2.0 -D 命令
② 在 webpack.config.js 的 module -> rules 數(shù)組中,添加 loader 規(guī)則如下:

其中 ? 之后的是 loader 的參數(shù)項:
? limit 用來指定圖片的大小,單位是字節(jié)(byte)
? 只有 ≤ limit 大小的圖片,才會被轉(zhuǎn)為 base64 格式的圖片

  1. 打包處理 js 文件中的高級語法

webpack 只能打包處理一部分高級的 JavaScript 語法。對于那些 webpack 無法處理的高級 js 語法,需要借
助于 babel-loader 進(jìn)行打包處理。例如 webpack 無法處理下面的 JavaScript 代碼:

  • 6.1 安裝 babel-loader 相關(guān)的包
    運(yùn)行如下的命令安裝對應(yīng)的依賴包:

npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D

在 webpack.config.js 的 module -> rules 數(shù)組中,添加 loader 規(guī)則如下:

  • 6.2 配置 babel-loader
    在項目根目錄下,創(chuàng)建名為 babel.config.js 的配置文件,定義 Babel 的配置項如下:
五 打包發(fā)布
  1. 為什么要打包發(fā)布
  1. 配置 webpack 的打包發(fā)布
  1. 把 JavaScript 文件統(tǒng)一生成到 js 目錄中
  1. 把圖片文件統(tǒng)一生成到 image 目錄中
  1. 自動清理 dist 目錄下的舊文件
六 Source Map
  1. 生產(chǎn)環(huán)境遇到的問題

前端項目在投入生產(chǎn)環(huán)境之前,都需要對 JavaScript 源代碼進(jìn)行壓縮混淆,從而減小文件的體積,提高文件的
加載效率。此時就不可避免的產(chǎn)生了另一個問題:
對壓縮混淆之后的代碼除錯(debug)是一件極其困難的事情

  1. 什么是 Source Map

Source Map 就是一個信息文件,里面儲存著位置信息。也就是說,Source Map 文件中存儲著壓縮混淆后的代碼,所對應(yīng)的轉(zhuǎn)換前的位置。
有了它,出錯的時候,除錯工具將直接顯示原始代碼,而不是轉(zhuǎn)換后的代碼,能夠極大的方便后期的調(diào)試。

  1. webpack 開發(fā)環(huán)境下的 Source Map
  • 3.1 默認(rèn) Source Map 的問題


  • 3.2 解決默認(rèn) Source Map 的問題

  1. webpack 生產(chǎn)環(huán)境下的 Source Map
  • 4.1 只定位行數(shù)不暴露源碼
  • 4.2 定位行數(shù)且暴露源碼


  1. Source Map 的最佳實踐
---------------------------------
實際開發(fā)中需要自己配置 webpack 嗎?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容