摘要:按需加載實(shí)現(xiàn)定義路由,每個(gè)路由映射一個(gè)組件。第一個(gè)參數(shù)是一個(gè)數(shù)組,表示所依賴的模塊,例如,第二個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),當(dāng)前面指定的模塊都加載成功后,它將被調(diào)用。加載的模塊會(huì)以參數(shù)形式傳入該函數(shù),從而在回調(diào)函數(shù)內(nèi)部使用這些模塊。
概念(懶加載)
當(dāng)打包構(gòu)建應(yīng)用時(shí),JavaScript包會(huì)變得非常大,影響頁面加載。如果我們能把不同路由對應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問的時(shí)候才加載對應(yīng)組件,嗯,這樣就更加高效了。
場景
xxx項(xiàng)目作為一個(gè)單頁面應(yīng)用,采用組件化的開發(fā)模式,每次啟動(dòng)首頁都會(huì)加載全部組件,但此時(shí)只是訪問了首頁而已,就造成了大量組件污染加載的情況。
目的
只在訪問當(dāng)前頁面時(shí)加載對應(yīng)組件,避免頁面組件全部加載。(按需加載)
實(shí)現(xiàn)
app.vue
router.js
import Vue from "vue" import VueRouter from "vue-router" import "babel-polyfill" import {Promise} from "es6-promise-polyfill" import App from "../components/app" // 定義路由,每個(gè)路由映射一個(gè)組件。 const Routers = [ { path: "/", // 路徑 component: resolve => require(["../components/member/index], resolve) // 異步加載組件 }, { path: "/login", component: resolve => require(["../components/member/login"], resolve) } ] const RouterConfig = { routes: Routers } // 創(chuàng)建router實(shí)例,并傳遞路由配置。 const router = new VueRouter(RouterConfig); // 創(chuàng)建并掛載根實(shí)例。 new Vue({ el:"#app", router, // 將h作為createElement的別名是一個(gè)通用慣例。 render: h =>(App) })
require()函數(shù)接受兩個(gè)參數(shù)。第一個(gè)參數(shù)是一個(gè)數(shù)組,表示所依賴的模塊,例如["moduleA","moduleB"],第二個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),當(dāng)前面指定的模塊都加載成功后,它將被調(diào)用。加載的模塊會(huì)以參數(shù)形式傳入該函數(shù),從而在回調(diào)函數(shù)內(nèi)部使用這些模塊。
示例代碼中使用了異步的方式加載組件,其中require函數(shù)負(fù)責(zé)異步引入將要渲染的組件,而resolve則負(fù)責(zé)異步回調(diào)渲染組件。
babel-polyfill:對Promise進(jìn)行轉(zhuǎn)碼編譯;
npm install --save babel-polyfill
es6-promise-polyfill 解決Promise兼容性問題。關(guān)于不太了解Promise的同學(xué)請移步這里
npm install --save es6-promise-polyfill
如有錯(cuò)誤,還請不吝指正。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90128.html
摘要:懶加載也叫延遲加載,即在需要的時(shí)候進(jìn)行加載,隨用隨載。路由的懶加載按需加載的寫法效果按需加載會(huì)在頁面第一次請求的時(shí)候,把相關(guān)路由組件塊的添加上非按需加載則會(huì)把所有的路由組件塊的包打在一起。當(dāng)業(yè)務(wù)包很大的時(shí)候建議用路由的按需加載懶加載。 懶加載也叫延遲加載,即在需要的時(shí)候進(jìn)行加載,隨用隨載。在單頁應(yīng)用中,如果沒有應(yīng)用懶加載,運(yùn)用webpack打包后的文件將會(huì)異常的大,造成進(jìn)入首頁時(shí),需要...
摘要:組件庫開發(fā)總結(jié)由于工作需要,最近在學(xué)習(xí)怎么開發(fā)一個(gè)組件庫。按需打包的使用要使用按需打包,不僅組件庫的打包需要做處理,項(xiàng)目中也需要做處理。 Vue組件庫開發(fā)總結(jié) 由于工作需要,最近在學(xué)習(xí)怎么開發(fā)一個(gè)Vue組件庫。主要需要實(shí)現(xiàn)以下點(diǎn):1.組件使用npm包引入2.實(shí)現(xiàn)按需引入及按需打包項(xiàng)目中許多實(shí)現(xiàn)是參考的element-ui,特別是webpack打包部分 組織項(xiàng)目 項(xiàng)目生成 項(xiàng)目生成是直接...
摘要:但是,這種情況下一個(gè)組件生成一個(gè)文件。提供的配置路由,使用的技術(shù),也可以實(shí)現(xiàn)按需加載。這種情況下,多個(gè)路由指定相同的,會(huì)合并打包成一個(gè)文件。舉例如下詳細(xì)代碼在倉庫項(xiàng)目路由配置文件 1. vue異步組件技術(shù) vue-router配置路由,使用vue的異步組件技術(shù),可以實(shí)現(xiàn)按需加載。 但是,這種情況下一個(gè)組件生成一個(gè)js文件。舉例如下: { path...
摘要:簡單說明原理使用實(shí)現(xiàn)按需引入打包。這里采用多入口配置,實(shí)現(xiàn)各個(gè)功能模塊分別打包成一個(gè)文件,并使用將樣式進(jìn)行抽離后,按入口進(jìn)行打包為對應(yīng)的文件。只要在指定入口名為。這個(gè)相關(guān)配置已經(jīng)發(fā)布了包。 簡單說明原理: 使用babel-plugin-component實(shí)現(xiàn)按需引入、打包。將webpack配置成多入口,保證最終打包的目錄結(jié)構(gòu)符合babel-plugin-component插件的要求,實(shí)...
摘要:但是實(shí)際上,回款管理和開票管理的組件文件也是加載了。所以下面引用按需加載來處理。是不是小很多了,然后和是按需加載的,就是需要的時(shí)候才加載。 1.前言 上篇文章(webpack+vue項(xiàng)目實(shí)戰(zhàn)(二,開發(fā)管理系統(tǒng)主頁面)),實(shí)現(xiàn)了,側(cè)邊欄的一個(gè)操作,點(diǎn)擊側(cè)邊欄的一些操作,最重要的就是路由的切換??戳松弦黄幕锇橐膊浑y發(fā)現(xiàn),除了點(diǎn)擊側(cè)邊欄‘首頁’之外,點(diǎn)擊其它的都是白色的一片。原因我想大家都...
閱讀 3682·2021-11-23 09:51
閱讀 1679·2021-10-22 09:53
閱讀 1359·2021-10-09 09:56
閱讀 864·2019-08-30 13:47
閱讀 2164·2019-08-30 12:55
閱讀 1607·2019-08-30 12:46
閱讀 1119·2019-08-30 10:51
閱讀 2419·2019-08-29 12:43