Vue按需加载的具体实现

网友投稿 383 2023-03-09


Vue按需加载的具体实现

概念(懒加载)

当打包构建应用时,javascript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,嗯,这样就更加高效了。

场景

xxx项目作为一个单页面应用,采用组件化的开发模式,每次启动首页都会加载全部组件,但此时只是访问了首页而已,就造成了大量组件污染加载的情况。

目的

只在访问当前页面时加载对应组件,避免页面组件全部加载。(按需加载)

实现

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'

// 定义路由,每个路由映射一个组件。

const Routers = [

{

path: rifITdzJm'/', // 路径

component: resolve => require(['../components/member/index], resolve) // 异步加载组件

},

{

path: '/login',

component: resolve => require(['../components/member/login'], resolve)

}

]

const RouterConfig = {

routes: Routers

}

// 创建router实例,并传递路由配置。

const router = new VueRouter(RouterConfig);

// 创建并挂载根实例。

new Vue({

el:'#app',

router,

// 将h作为createElement的别名是一个通用惯例。

render: h =>(App)

})

注意:

require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,例如['moduleA','moduleB'],第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模http://块会以参数形式传入该函数,从而在回调函数内部使用这些模块。

示例代码中使用了异步的方式加载组件,其中require函数负责异步引入将要渲染的组件,而resolve则负责异步回调渲染组件。

babel-polyfill:对Promise进行转码编译;

npm install --save babel-polyfill

es6-promise-polyfill 解决Promise兼容性问题。关于不太了解Promise的同学请移步这里

npm install --save es6-promise-polyfill


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:api 管理服务平台(api center)
下一篇:android接口设计(安卓接口原理图)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~