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导航菜单(自写)简单大方
Mar 28 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
Angular动态添加、删除输入框并计算值实例代码
Mar 29 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
Openlayers实现图形绘制
Sep 28 Javascript
vuejs实现下拉框菜单选择
Oct 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下载远程文件的3种方法
2015/12/29 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
javascript radio 联动效果
2009/03/04 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
Python入门篇之面向对象
2014/10/20 Python
Python中__name__的使用实例
2015/04/14 Python
pytorch 数据集图片显示方法
2018/07/26 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
opencv实现简单人脸识别
2021/02/19 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
新学期开学演讲稿
2014/05/24 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
护士个人总结范文
2015/02/13 职场文书
运动会广播稿200字
2015/08/19 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
python中urllib包的网络请求教程
2022/04/19 Python