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 相关文章推荐
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 Javascript
javascript实现滚轮轮播图片
Dec 13 Javascript
js加减乘除精确运算方法实例代码
Jan 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
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
python使用arcpy.mapping模块批量出图
2017/03/06 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
django自带调试服务器的使用详解
2019/08/29 Python
Django通过json格式收集主机信息
2020/05/29 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
幼儿园门卫制度
2014/01/29 职场文书
员工晚婚的请假条
2014/02/08 职场文书
无偿献血倡议书
2014/04/14 职场文书
计算机系本科生求职信
2014/05/31 职场文书
质量负责人任命书
2014/06/06 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
党员四风剖析材料
2014/08/27 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
家长通知书家长意见
2014/12/30 职场文书
大学生村官个人总结
2015/02/15 职场文书
男人帮观后感
2015/06/18 职场文书
初中班主任培训心得体会
2016/01/07 职场文书