vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画

当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载。

我们要做的就是把路由对应的组件定义成异步组件

const Foo = resolve => {
  // require.ensure 是 Webpack 的特殊语法,用来设置 code-split point
  // (代码分块)
  require.ensure([‘./Foo.vue‘], () => {
    resolve(require(‘./Foo.vue‘))
  })
}

这里还有另一种代码分块的语法,使用 AMD 风格的 require,于是就更简单了:

const Foo = resolve => require([‘./Foo.vue‘], resolve) 

不需要改变任何路由配置,跟之前一样使用 Foo

const router = new VueRouter({
  routes: [
    { path: ‘/foo‘, component: Foo }
  ]
}) 

把组件按组分块

有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中。只需要 给 chunk 命名,提供 require.ensure 第三个参数作为 chunk 的名称:

const Foo = r => require.ensure([], () => r(require(‘./Foo.vue‘)), ‘group-foo‘)
const Bar = r => require.ensure([], () => r(require(‘./Bar.vue‘)), ‘group-foo‘)
const Baz = r => require.ensure([], () => r(require(‘./Baz.vue‘)), ‘group-foo‘)

Webpack 将相同 chunk 下的所有异步模块打包到一个异步块里面 —— 这也意味着我们无须明确列出 require.ensure 的依赖(传空数组就行)。

如果你想在组件加载的时候可以有loading提示也同样的很简单

这里以mint-ui为例

import { Indicator } from ‘mint-ui‘;
//前提是npm i mint-ui -S

然后你就只需要稍微加一点代码

const Foo = resolve => {
Indicator.open();
  require.ensure([‘./Foo.vue‘], () => {
    resolve(require(‘./Foo.vue‘))
    Indicator.close()
  })
}
//这样就可以实现组件在异步加载的时候显示loading

效果如下

时间: 2024-08-03 15:10:56

vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画的相关文章

Vue组件系统

目录: Vue组件系统之全局组件的注册 Vue组件系统之组件的复用 Vue组价系统之局部组件的注册 Vue组件系统之父子组件的通信 Vue组件系统之子父组件的通信 Vue组件系统之混入(mixin) Vue组件系统之插槽<slot></slot> Vue组件系统之具名插槽 Vue组件系统之全局组件的注册 <div id='app'> <global-component></global-component></div> <scr

来吧!一文彻底搞定Vue组件!

作者 | Jeskson 来源 | 达达前端小酒馆 Vue组件的概述 组件是什么呢,了解组件对象的分析,Vue组件中的data属性,props传递数据的原理到底是什么. 事件通信的那些事 如何了解父子组件事件通信,和遇到非父子组件事件通信如何处理. 组件类型又是什么鬼 自定义组件双向绑定v-model,动态组件,又是如何称为动态的,为啥是动态呢,递归组件,如何理解递归. Vue组件的了解 Vue的理解,可以找我上一篇vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础,组件是什么,

webpack和vue的按需加载组件、console、抓包

1.webpack和vue的按需加载组件 webpack特有的懒加载文件的方式,很大的提升了webpack打包SPA应用的在性能方面. 而从webpack2以后require.ensure已经被import()替换. const Recommend = (resolve) => { import('components/recommend/recommend').then((module) => { resolve(module) }) } export default new Router(

vue组件懒加载与路由懒加载的实现

在项目很大的时候,首页会一次导入所有页面与组件,可以使用懒加载实现项目的优化,但项目很小,不推荐使用,项目小,分开后的懒加载会发多次请求,带来更多的性能缺陷 路由写法 //假设components下有一个home.vue,需要在路由页面引入 new Router({ routes:[{ path:'/', name:"home", components:()=>import("./components/home") //将路由顶部的引入,放在这里就实现路由的懒

【转】从零开始开发一个vue组件打包并发布到npm (把vue组件打包成一个可以直接引用的js文件)

自己写的组件 有的也挺好的,为了方便以后用自己再用或者给别人用,把组件打包发布到npm是最好不过了,本次打包支持 支持正常的组件调用方式,也支持Vue.use, 也可以直接引用打包好的js文件, 配合vue.js 就不需要webpakc这种构建工具了,可以直接在页面内使用,下面以 ‘yyl-npm-practice’ 这个包为例 第一步:使用 vue init webpack-simple yyl-npm-practice   初始化项目 提示: 不要用 vue init webpack npm

vue组件的引用:

本文是基于vue-cli脚手架的基础上对vue组件的引用做简单介绍,关于vue-cli脚手架,请见:vue脚手架的安装流程(vue-cli). 在src文件夹下创建components文件夹,并在其下面创建Home.vue和List.vue两个文件: 在App.vue中引入Home.vue和List.vue两个组件: 这样Home.vue和List.vue两个组件就被引入到App.vue组件里面了,效果图如下: 注意:引入组件的component是要带s的,而配置路由的component不要带s

Vue组件化开发

一. 通过axios实现数据请求 1. json简介 json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据格式. json的作用:在不同的系统平台,或不同编程语言之间传递数据. 1.1 json数据的语法 json数据对象类似于JavaScript中的对象,但是它的键对应的值里面是没有函数方法的,值可以是普通变量,不支持undefined,值还可以是数组或者jso

如何打造一套vue组件库

开篇组件库能帮我们节省开发精力,无需所有东西都从头开始去做,通过一个个小组件拼接起来,就得到了我们想要的最终页面.在日常开发中如果没有特定的一些业务需求,使用组件库进行开发无疑是更便捷高效,而且质量也相对更高的方案. 目前的开源组件库有很多,不管是react还是vue的体系里都有很多非常优秀的组件库,比如我经常使用的就有elementui和iview.当然也还有其他的一些组件库,他们的本质其实都是为了节省重复造基础组件这一轮子的过程.也有的公司可能会对自己公司的产品有特别的需求,不太愿意使用开源

vue组件

require.js 加载 vue组件 r.js 合并压缩 require.js 参考阮一峰 Javascript模块化编程(三):require.js的用法r.js 合并压缩 参考司徒正美 r.js合并实践 准备: vue.js 原本是学习vue组件 require.js 然后想到用require 加载 r.js 文件太多 合并 文件目录 忽略部分文件及文件夹 一.先说vue 组件 先引入vue 再引入vue组件 Vue.extend({}) 定义组件 template data method