Vue按需加载的具体实现


Posted in Javascript onDecember 02, 2017

概念(懒加载)

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

场景

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

目的

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

实现

app.vue

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

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: '/',  // 路径
    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'],第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部使用这些模块。

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

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

npm install --save babel-polyfill

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

npm install --save es6-promise-polyfill

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
Aptana调试javascript图解教程
Nov 30 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
js判断字符长度以及中英文数字等
Dec 31 Javascript
实例分析javascript中的call()和apply()方法
Nov 28 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
jQuery实现拖动效果的实例代码
Jun 25 jQuery
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
Javascript柯里化实现原理及作用解析
Oct 22 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 #Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 #jQuery
如何让你的JS代码更好看易读
Dec 01 #Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 #Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 #Javascript
利用JS测试目标网站的打开响应速度
Dec 01 #Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 #Javascript
You might like
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python内置模块logging用法实例分析
2018/02/12 Python
python框架中flask知识点总结
2018/08/17 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
python如何实现单链表的反转
2020/02/10 Python
python程序如何进行保存
2020/07/03 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
大学生创业计划书怎么写
2014/09/15 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
庆元旦主持词
2015/07/06 职场文书
美元符号 $
2022/02/17 杂记