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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
jQuery中实现动画效果的基本操作介绍
Apr 16 Javascript
jQuery插件datepicker 日期连续选择
Jun 12 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
jQuery实现简易的天天爱消除小游戏
Oct 16 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
Vue组件创建和传值的方法
Aug 17 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 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原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
jquery中this的使用说明
2010/09/06 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
layui导航栏实现代码
2017/05/19 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
教师党员一句话承诺
2014/03/28 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
信访工作个人总结
2015/03/03 职场文书
Python List remove()实例用法详解
2021/08/02 Python
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技