vue項目最佳化之按需載入組件-使用webpack require.ensure

來源:互聯網
上載者:User

標籤:ack   app.js   import   根據   net   nts   效果   項目   tps   

vue項目最佳化之按需載入組件-使用webpack require.ensure

 

使用 vue-cli構建的項目,在 預設情況下 ,執行 npm run build  會將所有的js代碼打包為一個整體,

打包位置是 dist/static/js/app.[contenthash].js   

類似下面的路由代碼 

router/index.js  路由相關資訊,該路由檔案引入了多個 .vue組件

  1. import Hello from ‘@/components/Hello‘
  2. import Province from ‘@/components/Province‘
  3. import Segment from ‘@/components/Segment‘
  4. import User from ‘@/components/User‘
  5. import Loading from ‘@/components/Loading‘

執行 npm run build 會打包為一個整體 app.[contenthash].js ,這個檔案是非常大,可能幾兆或者幾十兆,載入會很慢


所以我們需要分模組打包,把我們想要組合在一起的組件打包到一個 chunk塊中去

分模組打包需要下面這樣使用 webpack的 require.ensure,並且在最後加入一個 chunk名,

相同 chunk名字的模組將會打包到一起

  1. const Province = r => require.ensure([], () => r(require(‘@/components/Province.vue‘)), ‘chunkname1‘)
  2. const Segment = r => require.ensure([], () => r(require(‘@/components/Segment.vue‘)), ‘chunkname1‘)
  3. const Loading = r => require.ensure([], () => r(require(‘@/components/Loading.vue‘)), ‘chunkname3‘)
  4. const User = r => require.ensure([], () => r(require(‘@/components/User.vue‘)), ‘chunkname3‘)

根據 chunname的不同, 上面的四個組件, 將會被分成3個塊打包,最終打包之後與組件相關的js檔案會分為3個 (除了app.js,manifest.js, vendor.js)

分模組打包之後在 dist目錄下是這樣的, 這樣就把一個大的 js檔案分為一個個小的js檔案了,按需去下載,其他的使用方法和import的效果一樣

參考vue-router官方文檔: https://router.vuejs.org/zh-cn/advanced/lazy-loading.html

vue項目最佳化之按需載入組件-使用webpack require.ensure

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.