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 UI Dialog的样式设置问题
Dec 18 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 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基于openssl实现的非对称加密操作示例
2019/01/11 PHP
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
QML用PathView实现轮播图
2020/06/03 Python
详解Python中import机制
2020/09/11 Python
python中四舍五入的正确打开方式
2021/01/18 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
家访教师心得体会
2016/01/23 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL