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 相关文章推荐
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
Jan 06 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
jquery div拖动效果示例代码
Dec 08 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
详解jquery和vue对比
Apr 16 jQuery
vue router动态路由设置参数可选问题
Aug 21 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
vue中三级导航的菜单权限控制
Mar 31 Vue.js
使用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使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
浅谈python中requests模块导入的问题
2018/05/18 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
别名指示符是什么
2012/10/08 面试题
经济系大学生求职信
2013/10/01 职场文书
七年级政治教学反思
2014/02/03 职场文书
办护照工作证明
2014/10/01 职场文书
民间借贷借条如何写
2015/05/26 职场文书
看雷锋电影观后感
2015/06/10 职场文书
工伤调解协议书
2016/03/21 职场文书