美文网首页VUE前端性能优化
VUE 首屏加载时间优化

VUE 首屏加载时间优化

作者: 从零开始_b1ec | 来源:发表于2019-05-07 16:41 被阅读532次

在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏的体验。

解决方法是,将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首开的目的。

外部的库文件,可以使用CDN资源,或者别的服务器资源等。

下面来介绍几种方式:

1.大文件定位

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

安装

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


在webpack中设置如下,然后npm run dev的时候会默认在浏览器上打开

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

module.exports = {

  plugins: [

    new BundleAnalyzerPlugin()

  ]

}


2.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')))

3.将JS文件放在body的最后 

默认情况下,build后的index.html中,js的引入实在是在head中,使用html-webpack-plugin插件,将inject的值改为body。就可以将js引入放到body最后。

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

new HtmlWebpackPlugin({

    inject:'body'})

4.使用cdn 

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

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

module.exports = {

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

  entry: {

    app: './src/main.js'

  },

  externals:{

    'vue':'Vue',

    'vue-router':'VueRouter',

    'vuex':'Vuex'

  },

  // 格式为'aaa':'bbb',其中,aaa表示要引入的资源的名字,bbb表示该模块提供给外部引用的名字,由对应的库自定。例如,vue为Vue,vue-router为VueRouter

在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>

去掉原有的引用,否则还是会打包

//去掉import,如:

//import Vue from 'vue'//import Router from 'vue-router'

//去掉Vue.use(XXX),如:

//Vue.use(Router)

5.压缩代码,移除console 

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

new UglifyJsPlugin({

      uglifyOptions: {

        compress: {

          warnings: false,

          drop_console:true,

          pure_funcs:['console.log']

        }

      },

      sourceMap: config.build.productionSourceMap,

      parallel: true

    }),

相关文章

  • 常见面试题--js+css+vue

    1、变量提升、函数提升 2、数组的常用方法 3.优化首屏加载速度 4.Vue 首屏加载速度优化 5、Vue如何设置...

  • 构建工具

    Vue 首屏加载优化 关于 Vue 首屏加载优化的一点总结为什么我们要做三份 Webpack 配置文件 在知乎上我...

  • VUE 首屏加载时间优化

    在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才...

  • (转载)vue项目首屏加载优化实战

    vue项目首屏加载优化实战 问题 单页面应用的一个问题就是首页加载东西过多,加载时间过长。特别在移动端,单页面应用...

  • 81.vue前端性能优化实践

    前提:vue-cli3.0,pc端项目,首屏加载时间较长问题: 影响首屏时间长的主要问题:大文件的加载长,导致首屏...

  • vue首屏加载优化

    1.异步路由加载 2.不打包库文件 spa首屏加载慢,主要是打包后的js文件过大,阻塞加载所致。那么如何减小js的...

  • VUE首屏加载优化

    (1)组件按需加载;对Element-UI, Mint-UI组件进行按需加载;(2)路由组建懒加载;异步加载con...

  • vue首屏加载优化

    https://segmentfault.com/a/1190000010042512

  • Vue首屏加载优化

    Vue在开发WebApp的时候,有一个致命的缺点,那就是首次加载事件过长,本篇文章主要使用各种方法缩减文件大小,并...

  • vue首屏加载优化

    业务需要,从A网站跳转到B网站,网站加载慢,白屏时间有十几秒,影响用户体验,对项目进行了优化 技术栈:vue2+w...

网友评论

    本文标题:VUE 首屏加载时间优化

    本文链接:https://www.haomeiwen.com/subject/yiydoqtx.html