1,建立webpack項目
2,npm初始化
3,安裝webpack
4,建立其餘目錄和文件
--src:源文件目錄
--componets:組件目錄
--layer:組件layer目錄
--layer.html
--layer.js
--layer.less
--css:公用的樣式文件
--common.css
--assets:圖片資源目錄
--app.js
--dist:打包後靜態資源目錄
--index.html
--package.json
--webpack.config.js
5,案例1:
- webpack.config.js:定義文件入口,出口和模板
- 定義組件相關文件:layer.html,layer.less,layer.js
6,babel加載器應用
- 下載babel-loader包含babel-loader,babel-core(babel加載器將ES6轉換成瀏覽器能解析的語法)
- 下載babel插件:babel-preset-latest(babel插件用於將模塊打包成指定版本)
- preset插件配置方式一:webpack.config.js
- preset插件配置方式二:package.json
include:指定要轉換的模塊的目錄,exclude:指定不要轉換的模塊的目錄
include和exclude還能夠配置絕對路徑:
7,CSS加載器應用
- 安裝加載器:style-loader,css-loader
- 在webpack.config.js中配置加載css加載器
7.1,postcss-loader(css加前綴)
- 在webpack.config.js配置postcss-loader,使其打包時自動增長瀏覽器前綴
- 若css採用@import方式引用css文件,那麼這個引用的文件並不會通過postcss-loader
- 經過postcss-loader參數:importLoaders能夠設置,使全部css文件按順序通過:postcss-》css-loader-》style-loader處理
7.2,less-loader(處理less)
7.3,sass-loader(處理scss)
8,處理模板文件
8.1 模板時html語法
- html-loader可以將layer.html做爲模板字符串,在js中進行處理
- 在layer.js導入layer.html,使layer.html可以做爲字符串傳遞給其餘模塊
- 在入口文件中引用layer組件模塊,拿到layer組件的模板,將其插入到主頁面中
- 結果:layer組件成功插入到了index.html頁面中
8 .2 模板是ejs語法
- 在layer組件的js中引入模板,引入的模板返回的是一個方法(tpl)
- 結果:index.html頁面將根據傳遞的參數顯示layer組件
9,圖片處理
9.1 file-loader
- file-loader能根據相對路徑生成圖片的路徑(css文件,html文件)
- 結果:css,html文件將生成的文件路徑自動轉換到代碼中
- 若在組件的模板文件中使用相對路徑引用圖片,那麼當主頁面引用組件是,圖片路徑不會自動轉換,致使圖片沒法正常顯示,須要使用${require(image_path)},以下:
結果:使用上面方式後,組件中的圖片才能正常顯示
- 經過如下方式配置webpack.config.js的file-loader組件query參數,可以指定生成的圖片的位置和文件名,以下(assets目錄中,文件名爲圖片原名-5位哈希值.後綴)
9.2 url-loader
- url-loader能根據相對路徑生成文件路徑,且能根據圖片大小生成url方式引用的文件,和database64格式的圖片數據
- 結果:url-loader限制圖片大小爲20000kb,小於這個值的圖片不會從新打包,而是將圖片數據打包到js和html文件中,因此打包結果只生成兩個文件,且這兩個文件的大小也增大了。
9.3 image-webpack-loader
- 結合file-loader,或url-loader使用,可以對圖片進行壓縮
- 配置webpack.config.js,image-webpack放置url-loader後,先壓縮,再打包
結果:通過壓縮後,圖片的大小隻有7.07kb,而且生成在assets目錄中
加載器使用方式
- 在腳本的require中使用
- 經過CLI命令使用
- 經過配置文件webpack.config.js使用