Vue实现路由懒加载

Vue路由懒加载


使用懒加载的原因

1、如果项目比较大,在npm run build打包后, 生成的app.js(项目业务)文件会很大,用户在请求时,可能会造成短暂的页面空白,影响使用体验.
2、使用懒加载后, 打包会形成多个业务.js文件,当用户路由到哪个页面时,就请求哪个页面,不用一下子把所有的业务代码请过来,从而减少请求时间,提升用户的使用感受.

如何实现懒加载

1、普通页面路由注册:

import Login form '../components/page/Login.vue'
 {
 	path: '/login',
   	component: Login
  },

2、实现懒加载注册方式:

 {
	path: '/login',
	component: () => import('../components/page/Login.vue'),
 },

或者写成

const Login = () => import('../components/page/Login.vue')
 {
	path: '/login',
	component: Login
 },
  • 这样在经过打包之后,有几个懒加载的路由,打包后的dist文件夹里,就会有几个业务的js文件,这样在,用户点击相对应的路由跳转之后,才会去请求,这样减少用户的等待时间,提升用户的使用体验.
VueRouter 路由懒加载可以通过动态导入的方式实现,即在路由定义时通过 import() 函数异步加载组件。这样当用户访问该路由时,组件才会被加载,从而减少了首次加载时的文件大小和加载时间,提高了页面加载速度。 具体实现步骤如下: 1. 在路由定义时,将组件定义为一个函数,该函数通过 import() 函数动态加载组件。 ```js const router = new VueRouter({ routes: [ { path: '/about', component: () => import('./views/About.vue') } ] }) ``` 2. 在 webpack 中配置 babel-plugin-syntax-dynamic-import 插件,以支持 import() 函数动态导入语法。 ```js // webpack.config.js module.exports = { // ... module: { rules: [ // ... { test: /\.js$/, loader: 'babel-loader', options: { plugins: ['syntax-dynamic-import'] } } ] } } ``` 3. 在生产环境中开启路由懒加载,可以通过 webpack 的 SplitChunksPlugin 插件将路由组件打包成单独的文件,从而实现按需加载。 ```js // webpack.config.js const path = require('path') const { CleanWebpackPlugin } = require('clean-webpack-plugin') const HtmlWebpackPlugin = require('html-webpack-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin') module.exports = { mode: 'production', entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: '[name].[contenthash].js', chunkFilename: '[name].[contenthash].js' }, module: { rules: [ // ... ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ template: './public/index.html' }), new MiniCssExtractPlugin({ filename: '[name].[contenthash].css' }) ], optimization: { splitChunks: { chunks: 'all' } } } ``` 这样就可以实现 VueRouter 路由懒加载了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值