路由按需加载

一、为什么要按需加载(懒加载)

现在写的项目基本上功能模块都很多,如果没有懒加载,通过webpack打包以后的文件会很大,导致进入项目首页时,需要加载的时间特别长,非常不利于用户的体验。如果按需加载组件的话,可以有效的提高首屏加载速度。

实现的原理:不直接导入与路由相关的组件,改写成异步组件,当函数被调用的时候,才加载响应的组件内容。

二、使用

传统路由都是这样配置的:

import Vue from 'vue'
import VueRouter from 'vue-router'
import home from '@/views/home/home.vue'
Vue.use(VueRouter)
export default new VueRouter({
 routes: [
    { path: '/home', component: home }
  ]

1、按需加载:

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
export default new VueRouter({
 routes: [
    { 
        path:'/home', 
        name:'home',
        component:resolve=>require(['@/views/home/home'],resolve)
    } 
  ]

2、使用import 路由懒加载

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

import Vue from 'vue'
import VueRouter from 'vue-router'

const  Home = ()=>  import('@/views/home/home.vue')
 
Vue.use(VueRouter)

export default new VueRouter({
 routes: [
    { path: '/home', component: Home }
  ]

 将其简化:

import Vue from 'vue'
import VueRouter from 'vue-router'
 
Vue.use(VueRouter)
export default new VueRouter({
 routes: [
    { path: '/home',  component: () => import('@/views/home/home.vue') }
  ]
 

我用到的现在就这两种,如果还有更好的方法欢迎补充

Vue2的按加载路由主要是为了提高应用的初始加载速度和性能,特别是在大型项目中有大量的路由的情况下。Webpack是一个常用的前端构建工具,它允许我们配置按加载。在Vue Router中,可以结合Webpack的Code Splitting功能实现按加载。 以下是一般的步骤: 1. **安装依赖**:首先要安装`vue-router`和相关的插件,如`@vue/cli-plugin-router`如果使用Vue CLI。 ```bash npm install vue-router webpack-bundle-analyzer --save-dev ``` 2. **配置`webpack.config.js`**:在`configureWebpack`选项中添加按加载的配置。例如,使用动态导入(import())和 HtmlWebpackPlugin来分割模块: ```javascript module.exports = { //... configureWebpack: { optimization: { splitChunks: { chunks: 'all', name: 'chunk-vendors', // 子模块名 minSize: 0, maxSize: 0, cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, priority: -10, chunks: 'initial' }, common: { test: /[\\/]common[\\/].*\.js/, priority: -20, reuseExistingChunk: true, chunks: 'all' } } } }, runtimeChunk: { name: 'runtime' } } }; ``` 3. **设置路由**:在`router/index.js`中,使用异步组件来声明按加载路由: ```javascript const AsyncComponent = function (resolve) { require(['path/to/your/module'], resolve); }; export default [ { path: '*', component: AsyncComponent } ]; ``` 4. **在模板中引用**:在要的地方,通过`<router-view>`渲染异步组件: ```html <template> <div> <router-view :component="loadComponent"></router-view> </div> </template> <script> import AsyncComponent from '@/components/YourComponent.vue'; export default { data() { return { loadComponent: () => AsyncComponent } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

•᷄ࡇ•᷅哼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值