• vue首页加载优化,vue使用cdn加载插件,vue cdn优化


    前言

    问题: vue 线上打开首页速度太慢,js文件太大,且全部走当前服务器获取 js/css 数据,服务器带宽也跟不上

    处理方式: 把一些 js/ css 使用 cdn 的方式进行加载

    优化后使用 cdn 地址加载,浏览器可以快速拉取到数据

    在这里插入图片描述
    优化效果 : 优化前 15-20 秒完成加载, 优化后 2秒内完成加载

    1、main.js

    1、配置排除依赖
    2、配置cdn地址
    3、关闭打包生成 map.js 文件

    定义配置信息

    // 是否是生产环境
    const isProduction = process.env.NODE_ENV !== 'development';
    // 是否需要使用cdn
    const isNeedCdn = true
    // cdn 加速文件
    const assetsCDN = {
      /**
       * externals对象的属性名为package.json中,对应的库的名称(固定写法),属性值为引入时你自定义的名称
       */
      externals: {
        'vue': 'Vue',
        'axios': 'axios',
        'element-ui': 'ELEMENT',
        'vue-router': 'VueRouter',
        '@smallwei/avue': 'AVUE',
      },
      css: [
        'https://cdn.staticfile.org/element-ui/2.15.9/theme-chalk/index.min.css',
        //'https://cdn.jsdelivr.net/npm/@smallwei/avue@2.9.4/lib/index.css',
        'https://unpkg.com/@smallwei/avue@2.9.4/lib/index.css',
      ],
      js: [
        'https://cdn.staticfile.org/vue/2.6.14/vue.min.js',
        'https://cdn.staticfile.org/element-ui/2.15.9/index.min.js',
        'https://cdn.staticfile.org/axios/0.27.2/axios.min.js',
        'https://cdn.staticfile.org/vue-router/3.5.1/vue-router.min.js',
        //'https://cdn.jsdelivr.net/npm/@smallwei/avue@2.9.4/lib/avue.min.js' //慢
        'https://unpkg.com/@smallwei/avue@2.9.4/lib/avue.min.js'
    
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    加入配置
    externals = 排除
    cdn 信息注入到配置中

    module.exports = defineConfig({
    
     // 首页访问优化: 关闭生成的map.js 文件  https://blog.csdn.net/z591102/article/details/108076212
      productionSourceMap: false,
      /**
       * 首页访问优化: 排除依赖使用cdn方式引入
       * 参考: https://blog.csdn.net/weixin_43919509/article/details/124149728
       * @param config
       */
      configureWebpack: {
        // 生产环境,则添加不参与打包的包名和依赖包的名称
        externals: (isProduction || isNeedCdn) ? assetsCDN.externals : {}
      },
      chainWebpack: config => {
        // 生产环境或需要cdn时,才注入cdn
        if (isProduction || isNeedCdn) {
          config.plugin('html').tap(args => {
            args[0].cdn = assetsCDN
            return args
          })
        }
      },
    
    
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2、public/index.html

    读取 main.js 注入的配置

        <!-- 使用CDN的CSS文件 -->
        <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
        <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
        <% } %>
    
        <!-- 使用CDN的JS文件 -->
        <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
        <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
        <% } %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、效果查看

    1、首页会写入 css/js 文件

    在这里插入图片描述2、打包后的 js 文件大小会下降


    在这里插入图片描述
    关闭 生成map 以及 使用cdn 方式
    在这里插入图片描述

  • 相关阅读:
    力扣刷题Days20-151. 反转字符串中的单词(js)
    MAML:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks论文精读及详解
    日志11.01查看项目构造,理解SpringBoot 中的mapper,service,controller,model
    绝对不可错过的6个搜索引擎网站,超级值得收藏
    后端分页应该注意的事项
    要么干要么滚!推特开始裁员了;深度学习产品应用·随书代码;可分离各种乐器音源的工具包;Transformer教程;前沿论文 | ShowMeAI资讯日报
    【Pytorch深度学习实战】(7)深度残差网络(DRN)
    力扣——位运算系列
    前端入职配置新电脑!!!
    Tomcat的详解和使用
  • 原文地址:https://blog.csdn.net/qq_41463655/article/details/125503250