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
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