成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Webpack實踐技巧與建議

開發 開發工具
在使用Webpack的過程中總結的一系列建議與技巧,不過需要注意的是這些小技巧都是關于Webpack 1的。Webpack 2與Webpack 1相比其API發生了較大變化,本文提及的不少技巧可能在Webpack 2并不能起作用。

[[186469]]

在使用Webpack的過程中總結的一系列建議與技巧,不過需要注意的是這些小技巧都是關于Webpack 1的。Webpack 2與Webpack 1相比其API發生了較大變化,本文提及的不少技巧可能在Webpack 2并不能起作用。如果你想了解從Webpack 1遷移到Webpack 2的詳細教程,可以參考這里,另外可以參考筆者的基于Webpack 2的模板 Webpack2-React-Redux-Boilerplate。

進度反饋

可以在使用Webpack的時候添加如下選項:

  1. --progress --colors 

壓縮

可以在進行生產環境構建時添加-p選項:

  1. webpack -p 

多模塊分割

在設置output的文件名時可以使用[name].js多匹配名,如下的例子會生成a.js與b.js:

  1. module.exports = { 
  2.   entry: { 
  3.     a: './a'
  4.     b: './b' 
  5.   }, 
  6.   output: { filename: '[name].js' } 

如果你擔心代碼重復的問題,可以使用CommonsChunkPlugin來抽取出多個輸出文件的公共代碼:

  1. plugins: [ new webpack.optimize.CommonsChunkPlugin('init.js') ] 
  2. <script src='init.js'></script> 
  3. <script src='a.js'></script> 

分割應用于渲染代碼

同樣是使用CommonsChunkPlugin來講公共的渲染代碼移動到vendor.js中:

  1. var webpack = require('webpack'
  2.  
  3. module.exports = { 
  4.   entry: { 
  5.     app: './app.js'
  6.     vendor: ['jquery''underscore', ...] 
  7.   }, 
  8.  
  9.   output: { 
  10.     filename: '[name].js' 
  11.   }, 
  12.  
  13.   plugins: [ 
  14.     new webpack.optimize.CommonsChunkPlugin('vendor'
  15.   ] 

其工作流程如下,具體可以參考Code Splitting:

  • 添加vendor入口并且指定關聯庫
  • CommonsChunkPlugin會從app.js中移除相關庫
  • CommonsChunkPlugin 同樣會把Webpack的運行時依賴遷移到vendor.js中

Source Maps

目前***的Source Maps選項是cheap-module-eval-source-map,這個工具會幫助開發環境下在Chrome/Firefox中顯示源代碼文件,其速度快于source-map與eval-source-map:

  1. const DEBUG = process.env.NODE_ENV !== 'production' 
  2.  
  3. module.exports = { 
  4.   debug: DEBUG ? true : false
  5.   devtool: DEBUG ? 'cheap-module-eval-source-map' : 'hidden-source-map' 

在Chrome Devtools你可以在webpack:///foo.js?a93h路徑下查看文件,也可以選擇自定義配置:

  1. output: { 
  2.    devtoolModuleFilenameTemplate: 'webpack:///[absolute-resource-path]' 
  3.  } 

CSS

作者正在編輯中,請過幾日回來查看。

開發模式

如果你希望在僅僅在開發模式下開啟某些選項:

  1. const DEBUG = process.env.NODE_ENV !== 'production' 
  2.  
  3. module.exports = { 
  4.   debug: DEBUG ? true : false
  5.   devtool: DEBUG ? 'cheap-module-eval-source-map' : 'hidden-source-map' 

這個時候你需要注意在編譯生產環境版本時使用如下命令:env NODE_ENV=production webpack -p

包體組成分析

如果你覺得你的包體有點匪夷所思的大并且想具體了解到底是哪個模塊占據了大量的提及,可以使用webpack-bundle-size-analyzer:

  1. $ yarn global add webpack-bundle-size-analyzer 
  2.  
  3. $ ./node_modules/.bin/webpack --json | webpack-bundle-size-analyzer 
  4. jquery: 260.93 KB (37.1%) 
  5. moment: 137.34 KB (19.5%) 
  6. parsleyjs: 87.88 KB (12.5%) 
  7. bootstrap-sass: 68.07 KB (9.68%) 
  8. ... 

優化React包體

React在開發模式下會自帶開發工具,而我們希望在生產環境下能夠移除該工具從而減少包體,我們可以通過如下配置:

  1. plugins: [ 
  2.   new webpack.DefinePlugin({ 
  3.     'process.env': { 
  4.       'NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'
  5.     } 
  6.   }) 

優化Lodash

Lodash是非常不錯的工具庫,不過很多時候我們僅需要其一小部分功能,此時lodash-webpack-plugin就派上了用場:

  1. const LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); 
  2.  
  3. const config = { 
  4.   plugins: [ 
  5.     new LodashModuleReplacementPlugin({ 
  6.       path: true
  7.       flattening: true 
  8.     }) 
  9.   ] 
  10. }; 

引用某個文件夾中的所有文件

如果你希望達到如下的效果:

  1. require('./behaviors/*') /* Doesn't work! */ 

你需要使用require.context:

// stackoverflow.com/a/30652110/873870

  1. function requireAll (r) { r.keys().forEach(r) }  
  2. requireAll(require.context('./behaviors/'true, /\.js$/))s 

【本文是51CTO專欄作者“張梓雄 ”的原創文章,如需轉載請通過51CTO與作者聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-05-02 16:29:11

Webpack技巧建議

2021-12-20 00:03:38

Webpack運行機制

2021-12-15 23:42:56

Webpack原理實踐

2021-12-16 22:02:28

webpack原理模塊化

2021-12-24 08:01:44

Webpack優化打包

2021-12-19 07:21:48

Webpack 前端插件機制

2021-12-25 22:29:04

WebpackRollup 前端

2011-03-22 14:58:08

Nagios

2022-01-20 10:56:53

Webpack5持久化緩存

2018-09-27 14:33:20

數據科學大數據面試

2013-10-16 09:55:41

軟件質量開發質量

2021-12-17 00:02:28

Webpack資源加載

2021-12-22 22:44:49

Webpack熱替換模塊

2017-03-06 17:56:20

webpack管理多頁應用

2023-10-19 08:00:00

2024-08-15 08:11:10

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-07-04 22:22:23

Webpack5前端工具

2016-01-29 10:26:47

云端云遷移

2022-06-29 10:06:27

Webpack優化技巧前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99成人| 国产成人精品一区二区 | 日韩快播电影网 | 亚洲综合二区 | 精品国产一区二区三区成人影院 | 欧美片网站免费 | 亚洲一区二区三区视频 | 日本精品一区二区三区视频 | 一级黄色夫妻生活 | 秋霞电影院午夜伦 | 狠狠久久综合 | 日韩精品在线视频免费观看 | 国产精品a一区二区三区网址 | 成人高清视频在线观看 | 一区在线视频 | 欧美日韩成人在线观看 | 久久中文字幕在线 | 视频一区 亚洲 | 亚洲一区二区在线 | 国产在线网址 | 激情五月婷婷综合 | 在线看片网站 | 欧美一级二级在线观看 | 亚洲一区视频 | 激情国产视频 | 在线国产一区二区 | 久久久黄色 | 97国产在线观看 | 久热免费在线 | 91精品国产综合久久久久 | 一区二区中文 | 九九在线精品视频 | 亚洲一区二区中文字幕 | 欧美不卡| 亚洲精品中文字幕在线观看 | 欧美精品一区二区三区四区五区 | 精品久久国产老人久久综合 | 精品99在线 | 国产成人免费视频网站高清观看视频 | 国产成人精品免高潮在线观看 | 亚洲精品乱码久久久久v最新版 |