软件系统开发定制路由懒加载及实现方式(vue-router)

软件系统开发定制软件系统开发定制路由懒加载及实现方式。

文章目录


前言

什么是?--延迟加载,软件系统开发定制在需要的时候才会进行加载。


一、路由懒加载

         软件系统开发定制我们在路由中通常会定义很多不同的页面。如果不应用懒加载的话,很多页面都会打包到同一个js文件中,文件将会异常的大。造成进入首页时,需要加载的内容过多,时间过长,在浏览器中可能会出现短暂的空白页,从而降低用户体验,而运用路由懒加载是将各个模块分开打包,用户查看的时候再加载对应的模块,减少加载用时。

也就是说:一开始进入页面时不需要一次性把资源都加载完,需要时在加载对应的资源。 

二、实现路由懒加载

 路由懒加载的主要作用是将 路由对应的组件打包成一个个的js代码块。只有在这个路由被访问到的时候,才会加载对应组件的代码块。

  1. //非路由懒加载
  2. import Vue from 'vue'
  3. import Router from 'vue-router'
  4. import Home from '@/components/Home'
  5. import Login from '@/components/Login'
  6. import New from '@/components/New'
  7. import List from '@/components/List'
  8. ......
  9. routes:[
  10. {path:'/Login',name:'Login',component:Login},
  11. {path:'/',name:'Home',component:Home},
  12. ...
  13. ]

vue实现路由懒加载的三种方式: 

  • Vue异步组件
  • ES6的import()
  • webpack的require.ensure() 

1.Vue异步组件(异步加载)

vue-router 配置路由,使用vue的异步组件技术,可以实现懒加载,但是这种情况是一个组件会生成一个js文件。

component:resolve => require(['需要加载的组件地址'],resolve) 

  1. {path:'/login',name:'Login',
  2. component:resolve => require(['@/components/Login'],resolve)},
  3. {path:'/home',name:'Home',
  4. component:resolve => require(['@/components/Home'],resolve),
  5. children:[
  6. {path:'/new',name:'New',
  7. component:resolve =>require(['@/components/New'],resolve)},
  8. {path:'/list',name:'List',
  9. component:resolve => require(['@/components/List'],resolve)}
  10. ]
  11. }

2.推荐方式-ES6的import()

const 组件名 = () => import('组件路径')

  1. //下面没有指定webpackChunkName,每个组件打包成一个js文件
  2. const Foo = () => import('../components/Foo')
  3. const Aoo = () => import('../components/Aoo')

 指定相同的webpackChunkName,会合并打包成一个js文件

  1. const Foo = () => import(/*webpackChunkName:'ImportFuncDemo'*/,'../components/Foo');
  2. const Aoo - () => import(/*webpackChunkName:'ImportFuncDemo'*/,'../components/Aoo')
  3. ...
  4. {path:'/Foo',name:'Foo',component:Foo},
  5. {path:'/Aoo',name:'Aoo',component:Aoo},
  6. {path:'/Login',name:'Login',
  7. component: ()=>import(/*webpackChunkName:"ImportFuncDemo"*/,'../compontents/Login')}

 上面代码中,webpackChunkName值相同的会打包成一个js文件

 3.提供的require.ensure()实现懒加载

vue-router 配置路由,使用webpack的require.ensure技术,可以实现懒加载,这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

require.ensure可实现按需加载资源,包括js,css等,会给里面require的文件单独打包,不会合主文件打包在一起。 

  1. {path:'/home',name:'home',component:r=>
  2. require.ensure([],()=>r(require('@/components/home')),'funcDemo')},
  3. {path:'/new',name:'new',component:r=>
  4. require.ensure([],()=>r(require('@/components/new')),'funcDemo')},
  5. {path:'/list',name:'list',component:r=>
  6. require.ensure([],()=>r(require('@/components/list')),'listDemo')},

注:r就是resolve 

const list = r => require.ensure([],()=>r(require('组件地址')),'list') 

 第一个参数是数组,表明第二个参数里需要依赖的模块,这些会提前加载。

第二个是回调函数,在这个回调函数里面require的文件会被单独打包成一个chunk,不会和主文件打包在一起,这样就生成了两个chunk,第一次加载时只加载主文件。

第三个参数是错误回调。 

第四个参数是单独打包的chunk的文件名 

  1. const Coo = resolve=>{
  2. require.ensure([],()=>{resolve(require('@/components/List'))})
  3. }
  4. ...
  5. {path:'/list',name:'List',component:Coo}

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发