您的当前位置:首页正文

通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题

2023-11-30 来源:气吉美食网

这篇文章主要介绍了vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题,文中单独给大家介绍了vue router路由懒加载问题,需要的朋友可以参考下

懒加载:也叫延迟加载,即在需要的时候进行加载,随用随载。

像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时。

简单的说就是:进入首页不用一次加载过多资源造成用时过长!!!

懒加载的方式:

非懒加载的方式:

ps:下面看下vue-router路由懒加载

用vue.js写单页面应用时,会出现打包后的JavaScript包非常大,影响页面加载,我们可以利用路由的懒加载去优化这个问题,当我们用到某个路由后,才去加载对应的组件,这样就会更加高效,实现代码如下:

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

AJAX简单异步通信实例分析

AJAX对服务器返回XML的处理方法

AJAX机制详解以及跨域通信

小编还为您整理了以下内容,可能对您也有帮助:

vue-cli项目中如何缩短首屏加载时间以提高效率

本篇文章所说的内容是vue-cli项目中如何缩短首屏加载时间以提高效率,代码都非常详细,有需要的朋友可以看一下。

主要是首屏加载太慢。

大文件定位

我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件。

安装

npm install --save-dev webpack-bundle-analyzer

在webpack中设置如下,然后npm run dev 的时候默认会在8888端口显示。

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

mole.exports = {

plugins: [

new BundleAnalyzerPlugin()

]

}JS文件按需加载

如果没有这个设置,项目首屏加载时会加载整个网站所有的JS文件,所以将JS文件拆开,点击某个页面时再加载该页面的JS是一个很好的优化方法。

这里用到的就是vue的组件懒加载。在router.js中,不要使用import的方法引入组件,使用require.ensure。

import index from '@/components/index'

const index = r => require.ensure( [], () => r (require('@/components/index'),'index'))

//如果写了第二个参数,就打包到该`/JS/index` 的文件中。

//不写第二个参数,就直接打包在`/JS` 目录下。

const index = r => require.ensure( [], () => r (require('@/components/index')))使用cdn

打包时,把vue、vuex、vue-router、axios等,换用国内的bootcdn 直接引入到根目录的index.html中。

在webpack设置中添加externals,忽略不需要打包的库。

externals: {

'vue': 'Vue',

'vue-router': 'VueRouter',

'vuex': 'Vuex',

'axios': 'axios'

}在index.html中使用cdn引入。

<script src="//cdn.bootcss.com/vue/2.2.5/vue.min.js"></script>

<script src="//cdn.bootcss.com/vue-router/2.3.0/vue-router.min.js"></script>

<script src="//cdn.bootcss.com/vuex/2.2.1/vuex.min.js"></script>

<script src="//cdn.bootcss.com/axios/0.15.3/axios.min.js"></script>将JS文件放在body的最后

默认情况下,build后的index.html中,js的引入是在header中。

使用html-webpack-plugin插件,将inject的值改成body。就可以将js引入放到body最后。

var HtmlWebpackPlugin = require('html-webpack-plugin');

new HtmlWebpackPlugin({

inject: 'body',})

压缩代码并移除console

使用UglifyJsPlugin 插件来压缩代码和移除console。

new webpack.optimize.UglifyJsPlugin({

compress: {

warnings: false,

drop_console: true,

pure_funcs: ['console.log']

},

sourceMap: false

})

vue-router4层级多了,会卡顿

会卡顿。每个路由都需要进行匹配和解析,而多层嵌套的路由将导致匹配时间变长,从而影响应用程序的性能。
1、懒加载路由:使用懒加载路由可以在需要时异步加载组件并分块打包,从而避免一次性加载所有组件,优化页面加载速度。
2、合理划分路由:根据业务需求合理划分路由,避免无*的添加子路由,尤其是对于大型项目而言。
3、缓存组件:对于那些不经常发生变化的组件,应该启用缓存策略以避免重复渲染。
4、使用动态路由:如果你需要创建许多相似的路由,则可以使用动态路由。动态路由可以根据参数生成路由。
5、减少路由数量:减少路由数量是提高性能的另一个常见方法。只添加必要的路由,并使用动态路由来避免不必要的路由。

vue-router4层级多了,会卡顿

会卡顿。每个路由都需要进行匹配和解析,而多层嵌套的路由将导致匹配时间变长,从而影响应用程序的性能。
1、懒加载路由:使用懒加载路由可以在需要时异步加载组件并分块打包,从而避免一次性加载所有组件,优化页面加载速度。
2、合理划分路由:根据业务需求合理划分路由,避免无*的添加子路由,尤其是对于大型项目而言。
3、缓存组件:对于那些不经常发生变化的组件,应该启用缓存策略以避免重复渲染。
4、使用动态路由:如果你需要创建许多相似的路由,则可以使用动态路由。动态路由可以根据参数生成路由。
5、减少路由数量:减少路由数量是提高性能的另一个常见方法。只添加必要的路由,并使用动态路由来避免不必要的路由。

Vue项目加载慢,有什么方法可以找到问题原因,怎么解决?

什么导致了首页初步加载过慢
请看下面一张图就清楚了

即app.js文件过大导致的。。。

如何来处理
vue-route 懒加载
component: resolve => require([''],resolve)


在webpack打包的过程中,将多余文件去掉,如map文件

即在config/index.js中将proctionSourceMap的值修改为false,就可以在编译时不生成.map文件了


cdn
在项目开发中,我们会用到很多第三方库,如果可以按需引入,我们可以只引入自己需要的组件,来减少所占空间,但也会有一些不能按需引入,我们可以采用CDN外部加载,在index.html中从CDN引入组件,去掉其他页面的组件import,修改webpack.base.config.js,在externals中加入该组件,这是为了避免编译时找不到组件报错。

vue 异步加载
vue异步加载分为组件的异步加载和请求时的异步加载两种情况。

组件异步加载即为路由的异步
方法一:

方法三:webpack提供的require.ensure()
vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。
这种情况下,多个路由指定相同的chunkName,会合并打包成


可能到时候打包的时候会出现路径找不到情况,这时候在webpack.prod.conf.js中修改下一些文件

Vue项目加载慢,有什么方法可以找到问题原因,怎么解决?

什么导致了首页初步加载过慢
请看下面一张图就清楚了

即app.js文件过大导致的。。。

如何来处理
vue-route 懒加载
component: resolve => require([''],resolve)


在webpack打包的过程中,将多余文件去掉,如map文件

即在config/index.js中将proctionSourceMap的值修改为false,就可以在编译时不生成.map文件了


cdn
在项目开发中,我们会用到很多第三方库,如果可以按需引入,我们可以只引入自己需要的组件,来减少所占空间,但也会有一些不能按需引入,我们可以采用CDN外部加载,在index.html中从CDN引入组件,去掉其他页面的组件import,修改webpack.base.config.js,在externals中加入该组件,这是为了避免编译时找不到组件报错。

vue 异步加载
vue异步加载分为组件的异步加载和请求时的异步加载两种情况。

组件异步加载即为路由的异步
方法一:

方法三:webpack提供的require.ensure()
vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。
这种情况下,多个路由指定相同的chunkName,会合并打包成


可能到时候打包的时候会出现路径找不到情况,这时候在webpack.prod.conf.js中修改下一些文件

vue中如何优化单页应用首屏加载速度(详细)

本篇文章给大家带来的内容是关于vue中如何优化单页应用首屏加载速度(详细) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

单页应用会随着项目越大,导致首屏加载速度很慢!!!以下给出在下知道的几种优化方案

使用CDN资源,减小服务器带宽压力

路由懒加载

将一些静态js css放到其他地方(如OSS),减小服务器压力

按需加载三方资源,如iview,建议按需引入iview中的组件

使用nginx开启gzip减小网络传输的流量大小

webpack开启gzip压缩

若首屏为登录页,可以做成多入口,登录页单独分离为一个入口

使用CDN资源,减小服务器带宽压力在index.html中引入cdn资源

...

<body>

<p id="app">

</p>

<!-- built files will be auto injected -->

<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>

<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>

<script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>

<script src="https://cdn.bootcss.com/vue-resource/1.5.1/vue-resource.min.js"></script>

</body>

...修改 build/webpack.base.conf.js

mole.exports = {

context: path.resolve(__dirname, '../'),

entry: {

app: './src/main.js'

},

externals:{

'vue': 'Vue',

'vue-router': 'VueRouter',

'vuex':'Vuex',

'vue-resource': 'VueResource'

},

...

}修改src/main.js src/router/index.js 注释掉import引入的vue,vue-resource

// import Vue from 'vue'

// import VueResource from 'vue-resource'

// Vue.use(VueResource)路由懒加载const workCircle = r => require.ensure([], () => r(require('@/mole/work-circle/Index')), 'workCircle')

const workCircleList = r => require.ensure([], () => r(require('@/mole/work-circle/page/List')), 'workCircleList')将一些静态js css放到其他地方(如OSS),减小服务器压力注意这里的js文件,需要将结果抛出,然后在需要用到该js的组件中import引入

按需加载三方资源,如iview,建议按需引入iview中的组件按需引用请查看iview官方文档iview

使用nginx开启gzip减小网络传输的流量大小配置nginx,可以参考Nginx开启Gzip压缩大幅提高页面加载速度

webpack开启gzip压缩这里需要配合Nginx服务器,Nginx开启gzip

config/index.js中

mole.exports = {

build: {

...

// Gzip off by default as many popular static hosts such as

// Surge or Netlify already gzip all static assets for you.

// Before setting to `true`, make sure to:

// npm install --save-dev compression-webpack-plugin

proctionGzip: true, // 就是这里开启gzip,vue-cli搭建项目,这里默认为false

proctionGzipExtensions: ['js', 'css'],

// Run the build command with an extra argument to

// View the bundle analyzer report after build finishes:

// `npm run build --report`

// Set to `true` or `false` to always turn it on or off

bundleAnalyzerReport: process.env.npm_config_report

}

}build/webpack.prod.conf.js中

使用vue-cli构建项目时,默认会有这段代码

if (config.build.proctionGzip) {

const CompressionWebpackPlugin = require('compression-webpack-plugin')

webpackConfig.plugins.push(

new CompressionWebpackPlugin({

asset: '[path].gz[query]',

algorithm: 'gzip',

test: new RegExp(

'.(' +

config.build.proctionGzipExtensions.join('|') +

')$'

),

threshold: 10240,

minRatio: 0.8

})

)

}若首屏为登录页,可以做成多入口,登录页单独分离为一个入口

vue 项目的执行效率如何提高?

要提高 Vue 项目的执行效率,可以从以下几个方面入手:

1. 代码分割和懒加载:将代码分割成不同的块,只在需要时加载。可以使用 webpack 的 code splitting 功能来实现。

2. 路由懒加载:使用 Vue Router 的异步组件来实现路由懒加载,减少首次加载时间。

3. 服务端渲染:使用 Nuxt.js 等服务端渲染框架,将模板编译成静态 HTML,减少浏览器端的渲染时间。

4. 图片优化:对图片进行压缩、裁剪等操作,减少图片大小,提高加载速度。

5. 缓存策略:使用浏览器缓存、CDN 等技术,减少网络请求次数,提高响应速度。

气吉美食网还为您提供以下相关内容希望对您有帮助:

vue-router4层级多了,会卡顿

1、懒加载路由:使用懒加载路由可以在需要时异步加载组件并分块打包,从而避免一次性加载所有组件,优化页面加载速度。2、合理划分路由:根据业务需求合理划分路由,避免无限制的添加子路由,尤其是对于大型项目而言。3、缓存组件...

Vue项目加载慢,有什么方法可以找到问题原因,怎么解决?

方法一:方法三:webpack提供的require.ensure()vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。这种情况下,多个路由指定相同的chunkName,会合并打包成 可能到时候打包的时候会出现路径找...

vue中如何优化单页应用首屏加载速度(详细)

建议按需引入iview中的组件使用nginx开启gzip减小网络传输的流量大小webpack开启gzip压缩若首屏为登录页,可以做成多入口,登录页单独分离为一个入口使用CDN资源,减小服务器带宽压力在index.html中引入cdn资源... &lt;!-- bui...

vue-cli项目中如何缩短首屏加载时间以提高效率

主要是首屏加载太慢。大文件定位我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件。 安装npm install --save-dev webpack-bundle-analyzer在webpack中设置如下,然后npm...

Vue.js如何实现路由懒加载浅析

幸运的是:vue-router支持WebPack内置的异步模块加载系统。所以,那些使用较少的路由组件不必打包进bundles里,只需要在路由被访问时按需加载。话不多说了,来一起看看详细的实现过程:使用假设你的路由配置是这样的:import ...

vue 项目的执行效率如何提高?

可以使用 webpack 的 code splitting 功能来实现。2. 路由懒加载:使用 Vue Router 的异步组件来实现路由懒加载,减少首次加载时间。3. 服务端渲染:使用 Nuxt.js 等服务端渲染框架,将模板编译成静态 HTML,减少浏览器端...

vuewebuploader多文件上传变慢

vuewebuploader多文件上传变慢是nginx配置的问题。解决方法:1、将路由改为懒加载,修改router文件。2、将ip修改成localhost,修改的前提是前后端的项目是放在同一个服务器。3、修改后会发现文件上传完后,上下行流量没有进行...

vue路由router,routes,route

pid是一个变量,在用这个动态路由的时候可以 懒加载是当你点击一个页面时,先缓存所有的链接,不执行,只执行那个页面的资源,这样可以提升效率,提高响应速度。路由懒加载很简单,在component用import引入组件,如下:router相当...

浅谈vue项目可以从哪些方面进行优化

sprites Generator、腾讯的gopng、spriteme 代码生成:gulp.spritesmith或者sass的compass页面性能优化图片或组件懒加载使用vue-lazyload组件或其他一些组件vue-lazyload地址: https://www.npmjs.com/package/vue-lazyload图片懒加载...

页面加载过慢怎么处理

优化网站尽量用语义化代码进行书写,并将代码与样式分离,除去语义化代码之外还有js的使用,js过多导致文件大会影响网站加载速度,js代码统一放在js文件中,不必要js文件选用延时加载。手机网页加载缓慢怎么办1、避开手机上网密集...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

显示全文

相关阅读

热门推荐