日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Webpack實踐技巧與建議

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

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比瀍河網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式瀍河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瀍河地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

進度反饋

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

 
 
 
  1. --progress --colors

壓縮

可以在進行生產(chǎn)環(huán)境構(gòu)建時添加-p選項:

 
 
 
  1. webpack -p

多模塊分割

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

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

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

 
 
 
  1. plugins: [ new webpack.optimize.CommonsChunkPlugin('init.js') ]

分割應(yīng)用于渲染代碼

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

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

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

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

Source Maps

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

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

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

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

CSS

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

開發(fā)模式

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

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

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

包體組成分析

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

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

優(yōu)化React包體

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

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

優(yōu)化Lodash

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

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

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

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

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

你需要使用require.context:

// http://stackoverflow.com/a/30652110/873870

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

 【本文是專欄作者“張梓雄 ”的原創(chuàng)文章,如需轉(zhuǎn)載請通過與作者聯(lián)系】


當前文章:Webpack實踐技巧與建議
網(wǎng)站路徑:http://www.dlmjj.cn/article/dhdcpsc.html