1. 程式人生 > >vue 元件按需引用,vue-router懶載入,vue打包優化,載入動畫

vue 元件按需引用,vue-router懶載入,vue打包優化,載入動畫

當打包構建應用時,Javascript 包會變得非常大,影響頁面載入。如果我們能把不同路由對應的元件分割成不同的程式碼塊,然後當路由被訪問的時候才載入對應元件,這樣就更加高效了。

結合 Vue 的 非同步元件 和 Webpack 的 code splitting feature, 輕鬆實現路由元件的懶載入。

我們要做的就是把路由對應的元件定義成非同步元件

複製程式碼
const Foo = resolve => {
  // require.ensure 是 Webpack 的特殊語法,用來設定 code-split point
  // (程式碼分塊)
  require.ensure(['./Foo.vue'], () => {
    resolve(require(
'./Foo.vue')) }) }
複製程式碼

這裡還有另一種程式碼分塊的語法,使用 AMD 風格的 require,於是就更簡單了:

const Foo = resolve => require(['./Foo.vue'], resolve) 

不需要改變任何路由配置,跟之前一樣使用 Foo

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

把元件按組分塊

有時候我們想把某個路由下的所有元件都打包在同個非同步 chunk 中。只需要 給 chunk 命名,提供 require.ensure

 第三個引數作為 chunk 的名稱:

const Foo = r => require.ensure([], () => r(require('./Foo.vue')), 'group-foo')
const Bar = r => require.ensure([], () => r(require('./Bar.vue')), 'group-foo')
const Baz = r => require.ensure([], () => r(require('./Baz.vue')), 'group-foo')

Webpack 將相同 chunk 下的所有非同步模組打包到一個非同步塊裡面 —— 這也意味著我們無須明確列出 require.ensure

 的依賴(傳空陣列就行)。

如果你想在元件載入的時候可以有loading提示也同樣的很簡單

這裡以mint-ui為例

import { Indicator } from 'mint-ui';
//前提是npm i mint-ui -S

然後你就只需要稍微加一點程式碼

複製程式碼
const Foo = resolve => {
Indicator.open();
  require.ensure(['./Foo.vue'], () => {
    resolve(require('./Foo.vue'))
    Indicator.close()
  })
}
//這樣就可以實現元件在非同步載入的時候顯示loading
複製程式碼

效果如下

相關推薦

vue 元件引用vue-router載入vue打包優化載入動畫

當打包構建應用時,Javascript 包會變得非常大,影響頁面載入。如果我們能把不同路由對應的元件分割成不同的程式碼塊,然後當路由被訪問的時候才載入對應元件,這樣就更加高效了。結合 Vue 的 非同步元件 和 Webpack 的 code splitting feature

vue-cli載入載入元件

vue來做一個單頁面應用,當我們的專案越來越大,元件越來越多的時候,首次啟動專案戶特別慢,就算做一個載入框,蒙層之類的,體驗也不會好,這個時候就需要按需載入1.什麼叫按需載入            所謂按需載入,顧名思義,就是當我需要的時候再給我,我不要的時候,你就老老實實待

vue+webpack 實現元件引入

1、安裝依賴包1$ npm install --save-dev babel-preset-es2015ps:babel-loader、babel-core應該是預設裝好的,如果沒有安裝,請重新安裝2、修改【webpack.base.conf.js】配置檔案找到 /\.js$/的rules,進行修改12345

vue-cli引入element-ui

按照element-ui官方提供的步驟一步一步調整,最後可能會報錯,對應不同錯誤,有如下不同的執行方式: 如果報錯Module build failed: Error: Couldn't find preset "es2015" relative to directory  則執行

Vue+Webpack 專案打包優化從 60s 到 17s 的優化

有的 Vue 專案比較大或者說專案中引入了許多第三方庫,那麼在執行 NPM、Run、Build 構建專案的時候會極其的慢。比如我現在的專案就每次打包就要大概 60s 的樣子。可能大家也會遇到如下同樣的問題: NPM、Run、Build 構建專案耗時較長; 打包出來的檔案太大; 打包前

路由元件載入的幾種方法

 在Vue專案中,一般使用vue-cli構建專案後,我們會在Router資料夾下面的index.js裡面引入相關的路由元件,如: import Hello from '@/components/Hello' import Boy from '@/components/Boy

vue+webpack專案打包優化從60s到17s的優化之法

有的 Vue 專案比較大.或者說專案中引入了許多第三方庫,那麼在執行 npm run build 構建專案的時候會極其的慢.比如我現在的專案就每次打包就要大概60s的樣子。可能大家也會遇到如下同樣的問題

詳解ListView載入網路圖片的優化讓你輕鬆掌握!

最近身邊很多的人在問ListView載入網路圖片該如何防止OOM,對於初學者來說ListView雖然平常用的比較多,但大多不知道該如何進行優化。同時,在面試的過程中ListView的優化問題也是最常會被問到的,以前面試中要是你能說出優化ListView的幾個方法,那基本上

載入iviei元件引入vue專案報iview is not defined解決辦法(使用vue-vli + iview)

解決方法 npm 下載(我使用了淘寶映象): cnpm install iview --save cnpm install babel-plugin-import --save-dev .babelrc檔案 { "presets": [ ["env", {

vue專案引用 iView 元件——全域性安裝與載入

隨著Vue框架的熱度,出現了不少基於Vue的UI元件庫,這次專案用到了 iView 這個元件庫。使用方法官網很詳細。 官網:https://www.iviewui.com/ 這篇文章主要是記錄一下npm 全域性安裝以及按需引用的用法。 一、全域性引用 ①、先安裝iview&nbs

vue-router 加載

ensure 實現 www name ins import nts pac 添加 vue的單頁面(SPA)項目,必然涉及路由按需的問題。以前我們是這麽做的 //require.ensure是webpack裏面的,這樣做會將單獨拉出來作為一個chunk文件 const Lo

Vue.js中用webpack合併打包多個元件並實現載入

對於現在前端外掛的頻繁更新,所以多多少少要對元件化有點了解,下面這篇文章主要給大家介紹了在Vue.js中用webpack合併打包多個元件並實現按需載入的相關資料,需要的朋友可以參考下。   前言 隨著移動裝置的升級、網路速度的提高,使用者對於web應用的要求越來越高,web

vue專案實現載入的3種方式:vue非同步元件、es提案的import()、webpack的require.ensure()

1. vue非同步元件技術 vue-router配置路由,使用vue的非同步元件技術,可以實現按需載入。 但是,這種情況下一個元件生成一個js檔案。 舉例如下: { path: '/promisedemo', na

vue專案優化載入元件-使用webpack require.ensure

用 vue-cli構建的專案,在 預設情況下 ,執行 npm run build  會將所有的js程式碼打包為一個整體, 打包位置是 dist/static/js/app.[contenthash].js    類似下面的路由程式碼  router/index.j

玩轉vue前進重新整理後退不重新整理and重新整理

大白蘿蔔小課堂開講了!帶你玩轉vue前進後退按需重新整理! 用vue做後臺管理專案,特別是有列表頁、列表資料詳情頁、列表資料修改頁功能的碼友們,幾乎都被vue前進後退都重新整理的邏輯坑過,本蘿蔔更是! 蘿蔔的產品經理老先生(人稱老白,送外賣的進來都叫老先生)的要求是 :    1.列

Vue加載

api out 沒有 ade 實現 webpack number HA 相同 vue項目實現按需加載的3種方式:vue異步組件、es提案的import()、webpack的require.ensure() 1. vue異步組件技術 vue-router配置路由,使用v

vue引入echarts

gen http src font tool spa 模板 ada ont   下載安裝echarts包:npm install echarts -D 一、全局引入   main.js中配置 import echarts from ‘echarts‘ //引入echar

vue元件樣式新增scoped屬性之後無法被父元件修改。或者無法在本元件修改element UI樣式

在vue開發中,需要使用scoped屬性避免樣式的全域性干擾,但是這樣在父元件中是無法被修改的,不僅如此如果專案中用了UI框架比如element Ui,這個時候在本元件也無法修改樣式,因為權重問題。但是想要修改還是有方法的: 1. 在不去掉scoped的情況下,在全域性樣式中覆蓋,這種解法,有弊端,可能會汙

Vue元件--引用模板

如果說元件的template內容結構比較簡單,可以直接寫在template選項中;但是當自定義元件的template內容比較複雜的時候,直接寫就不合適了,也容易出錯,所以: 對於這種狀況Vue給出了自己的解決方案:使用模板,使用Vue的內建template模板來包裹著模板內容 &l

VUE元件開發】VUE隨意點選列表元素切換選中樣式並有序陣列新增索引和數值

直接檢視程式碼以及樣式 <template> <div> <!--頂部step--> <div class="dataStep"> <!--<img src="static