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 相关文章推荐
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
读Javascript高性能编程重点笔记
Dec 21 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
VueJs 将接口用webpack代理到本地的方法
Nov 27 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
Vue中Quill富文本编辑器的使用教程
Sep 21 Javascript
解决微信小程序中的滚动穿透问题
Sep 16 Javascript
Javascript数组及类数组相关原理详解
Oct 29 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并发访问实例代码
2012/09/06 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
python 堆和优先队列的使用详解
2019/03/05 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
受伤赔偿协议书
2014/09/24 职场文书
三下乡个人总结
2015/03/04 职场文书
会计专业求职信范文
2015/03/19 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
阿凡达观后感
2015/06/10 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL