• 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 方式
    在这里插入图片描述

  • 相关阅读:
    Wireshark-win32-1.8.4 给winxp和win2003用
    UNI-APP_开发支付宝小程序注意事项与解决方法,支付宝小程序图片显示问题
    vector使用的注意事项
    操作系统知识点总结——第四章文件管理
    Ubuntu22.04.1 LTS系统上实现KVM虚拟机显卡直通(AMD/NVIDIA+板载显卡)
    Java架构师缓存架构设计
    【SpringBoot应用篇】Spring Boot中ImportBeanDefinitionRegistrar接口、ImportSelector接口的作用
    【NODE.JS】多进程架构(一)——基本概念
    ventoy安装操作系统
    第三次工业革命(四)
  • 原文地址:https://blog.csdn.net/qq_41463655/article/details/125503250