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 相关文章推荐
Prototype RegExp对象 学习
Jul 19 Javascript
js封装的textarea操作方法集合(兼容很好)
Nov 16 Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
vue中的计算属性和侦听属性
Nov 06 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 不同编码下的字符串长度区分
2009/09/26 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
小程序实现列表倒计时功能
2021/01/29 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
详解Python的Django框架中的模版相关知识
2015/07/15 Python
Python中static相关知识小结
2018/01/02 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
在python中画正态分布图像的实例
2019/07/08 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
python实现批量转换图片为黑白
2020/06/16 Python
Python字典dict常用方法函数实例
2020/11/09 Python
Python用SSH连接到网络设备
2021/02/18 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
工业自动化专业自荐信范文
2014/04/10 职场文书
职工小家建设活动方案
2014/08/25 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书