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 相关文章推荐
ExtJS Grid使用SimpleStore、多选框的方法
Nov 20 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
js登录弹出层特效
Mar 07 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
JavaScript生成指定范围的时间列表
Mar 19 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 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
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
python实现文件名批量替换和内容替换
2014/03/20 Python
Python之PyUnit单元测试实例
2014/10/11 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
学习Django知识点分享
2019/09/11 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
python的launcher用法知识点总结
2020/08/07 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
商务主管岗位职责
2013/12/08 职场文书
医院门卫岗位职责
2013/12/30 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
公务员政审材料范文
2014/12/23 职场文书
入党积极分子群众意见
2015/06/01 职场文书
科级干部培训心得体会
2016/01/06 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
python开发飞机大战游戏
2021/07/15 Python
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python