vue 首次加载太慢问题

1.路由懒加载

路由懒加载和组件懒加载:const One = ()=>import("./one");
图片懒加载:使用vue-lazyload插件

2.webpack 关闭 map 模式

在设置了productionSourceMap: false之后,就不会生成map文件,map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。也就是说map文件相当于是查看源码的一个东西。如果不需要定位问题,并且不想被看到源码,就把productionSourceMap 置为false,既可以减少包大小,也可以加密源码。

module.exports = {
  productionSourceMap:false
}
3.依赖模块采用第三方cdn导入
4.webpack开启gzip压缩文件传输模式

gizp压缩是一种http请求优化方式,通过减少文件体积来提高加载速度。html、js、css文件甚至json数据都可以用它压缩,可以减小60%以上的体积。
webpack打包时借助 compression webpack plugin实现gzip压缩,安装插件如下:npm i -D compression-webpack-plugin

在vue-cli 3.0 中,vue.config.js配置如下:

const CompressionPlugin = require('compression-webpack-plugin');//引入gzip压缩插件
module.exports = {
    plugins:[
        new CompressionPlugin({//gzip压缩配置
            test:/\.js$|\.html$|\.css/,//匹配文件名
            threshold:10240,//对超过10kb的数据进行压缩
            deleteOriginalAssets:false,//是否删除原文件
        })
    ]
}
5.开启页面预渲染

使用插件:prerender-spa-plugin
vue.config.js中配置如下:

const PrerenderSpaPlugin = require('prerender-spa-plugin');
const Render = PrerenderSpaPlugin.PuppeteerRenderer;
const path = require('path');
 
configureWebpack: () => {
  if (process.env.NODE_ENV !== 'production') return;
  return {
    plugins: [
      new PrerenderSPAPlugin({
        // 生成文件的路径,也可以与webpakc打包的一致。
        // 下面这句话非常重要!!!
        // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
        staticDir: path.join(__dirname, 'dist'),
 
        // 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
        routes: ['/', '/Login', '/Home'],
 
        // 这个很重要,如果没有配置这段,也不会进行预编译
        renderer: new Renderer({
          inject: {
            foo: 'bar'
          },
          headless: false,
          // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
          renderAfterDocumentEvent: 'render-event'
        })
      })
    ]
  };
}
6.冻结对象 (加载大量数据时候使用,不会进行get set 处理)
this.datas = Object.freeze(obj);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容