vue項(xiàng)目打包webpack體積優(yōu)化

一阱表、查看項(xiàng)目打包
webpack有個(gè)插件webpack-bundle-analyzer,可以查看項(xiàng)目一共打了多少包贡珊,每個(gè)包的體積最爬,每個(gè)包里面的包情況。
vue-cli 2.0已經(jīng)集成好了這個(gè)插件的配置
我們只需在package.json中添加命令

"scripts": {
   "analyz": "cross-env NODE_ENV=production npm_config_report=true npm run build"
}

這樣即可查看包大小了门岔。

二爱致、路由懶加載
把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問的時(shí)候才加載對(duì)應(yīng)組件寒随,這樣就更加高效了糠悯。

const Foo = () => import('./Foo.vue')
const router = new VueRouter({
  routes: [
    { path: '/foo', component: Foo }
  ]
})

三、異步組件
在大型應(yīng)用中妻往,我們可能需要將應(yīng)用分割成小一些的代碼塊逢防,并且只在需要的時(shí)候才從服務(wù)器加載一個(gè)模塊。Vue 只有在這個(gè)組件需要被渲染的時(shí)候才會(huì)觸發(fā)該工廠函數(shù)蒲讯,且會(huì)把結(jié)果緩存起來供未來重渲染.

components: {
    'my-component': () => import('./my-async-component')
}

這里注意:如果項(xiàng)目打包后的app.js包不超過1M的話忘朝,這里不建議使用異步加載組件。因?yàn)楫惒郊虞d每拆分一次就多一次http請求判帮,如果項(xiàng)目不是特別大的話反而會(huì)降低性能局嘁。所以app.js至少超過1M的時(shí)候才使用異步組件.

四、webpack的external功能
將項(xiàng)目中需要的一些公共依賴包晦墙,并且不常變動(dòng)的悦昵,單獨(dú)取出,不再每次都打包編譯晌畅。如vue但指、vue-router、vuex、axios用cdn中的文件代替棋凳,而不是直接打包到vendor中.這樣在有緩存的情況下拦坠,這些資源均走緩存,不必加載剩岳。

  1. 在index.html中引入js文件
<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
  1. 去掉這些第三方j(luò)s的import
  2. 配置webpack.base.conf.js的externals選項(xiàng)
module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: ["babel-polyfill", "./src/main.js"]
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  externals: {
    react:'React',
    vue: 'Vue',
    jquery:'jQuery'
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
    }
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery'
    })
  ],
  module: { }
}

注意:external選項(xiàng)的鍵值對(duì)如果配置錯(cuò)了這些大文件仍舊參與打包贞滨,導(dǎo)致優(yōu)化失敗。鍵拍棕,就是用npm install命令裝的插件名稱晓铆。值,就是插件對(duì)外提供的那個(gè)對(duì)象绰播,這個(gè)需要打開源碼看看骄噪。

五、實(shí)現(xiàn)elment-ui和echarts的按需加載
因?yàn)橹坝衅恼抡f到了echarts的按需加載蠢箩。這里只涉及elment-ui的按需加載

  • 安裝babel-plugin-component
npm install babel-plugin-component - D
  • 修改.babelrc
{
  "presets": [
    ["env", {
      "modules": false
    }],
    "es2015","stage-2"
  ],
  "plugins": [
    "transform-runtime",
      [
        "component",
        {
          "libraryName": "element-ui",
          "styleLibraryName": "theme-chalk"
        }
      ]
  ],
  • 在main.js中按需引入
import { Menu, MenuItem,InputNumber,DatePicker,Popover,Badge,Select,Option } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腰池,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忙芒,更是在濱河造成了極大的恐慌,老刑警劉巖讳侨,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呵萨,死亡現(xiàn)場離奇詭異,居然都是意外死亡跨跨,警方通過查閱死者的電腦和手機(jī)潮峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勇婴,“玉大人忱嘹,你說我怎么就攤上這事「剩” “怎么了拘悦?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長橱脸。 經(jīng)常有香客問我础米,道長,這世上最難降的妖魔是什么添诉? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任屁桑,我火速辦了婚禮,結(jié)果婚禮上栏赴,老公的妹妹穿的比我還像新娘蘑斧。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布竖瘾。 她就那樣靜靜地躺著沟突,像睡著了一般。 火紅的嫁衣襯著肌膚如雪准浴。 梳的紋絲不亂的頭發(fā)上事扭,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音乐横,去河邊找鬼求橄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛葡公,可吹牛的內(nèi)容都是我干的罐农。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼催什,長吁一口氣:“原來是場噩夢啊……” “哼涵亏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒲凶,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤气筋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后旋圆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宠默,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年灵巧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搀矫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刻肄,死狀恐怖瓤球,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敏弃,我是刑警寧澤卦羡,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站麦到,受9級(jí)特大地震影響虹茶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隅要,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一蝴罪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧步清,春花似錦要门、人聲如沸虏肾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封豪。三九已至,卻和暖如春炒瘟,著一層夾襖步出監(jiān)牢的瞬間吹埠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工疮装, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缘琅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓廓推,卻偏偏與公主長得像刷袍,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子樊展,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容