Vue如何使用cdn加载资源加快打包速度

 更新时间:2022年05月26日 09:52:42   作者:努力搬砖的阿一  
外部的库文件,可以使用CDN资源,或者别的服务器资源等,下面这篇文章主要给大家介绍了关于Vue如何使用cdn加载资源加快打包速度的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

为什么使用CDN

Vue项目打包的时候,默认会把所有代码合并生产新文件,其中包括各种库导致打包出来很大。如果使用cdn的话,会更利于程序的加载速度。

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

解决方法

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

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

使用CDN主要解决两个问题

  • 打包时间太长、打包后代码体积太大,请求慢
  • 服务器网络不稳带宽不高,使用cdn可以回避服务器带宽问题

具体步骤

下面,以引入vue、vuex、vue-router为例,说明处理流程。

资源引入

1. 在项目根目录index.html使用cdn节点导入

<body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
    <!--开发环境-->
    <script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
    <!--生产环境-->
    <!--<script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script>-->
    <!-- 引入组件库 -->
    <script src="https://cdn.bootcss.com/vue-router/3.2.0/vue-router.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.23.0/axios.min.js"></script>
    <script src="https://cdn.bootcss.com/element-ui/2.15.6/index.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
</body>

2. 在vue.config.js中加入externals外部扩展

configureWebpack: {
    externals: {
        "vue": "Vue",
        "vue-router": "VueRouter",
        "axios": "axios",
        "moment": "moment",
        "element-ui": "ELEMENT",
    }
},

这里解释一下externals 配置选项的作用:

我们想引用一个库,但是又不想让webpack打包,并且又不影响我们在程序中以CMD、AMD或者window/global全局等方式进行使用,那就可以通过配置externals。

踩坑配置注意点:element-ui要大写为ELEMENT

3. 去掉原有的引用

如果不删除原先的import,项目还是会从node_modules中引入资源。
也就是说不删的话,npm run build时候仍会将引用的资源一起打包,生成文件会大不少。所以我认为还是删了好
image.png

打包对比

引入node_modules中模块:可以看到element和moment占比大

image.png

CDN引入模块:

能够看到vendor.js文件大大减少,打包速度也快了不少

问题集 vue-cli 4使用report分析vendor.js

Vue Cli(@/vue/cli)自带的webpack包体积优化工具,它可以查看各个模块的size大小,方便优化。只需要在build后面加上 --report 参数即可。

1. 我们把命令配置到package.json里

"scripts": {
  "serve": "vue-cli-service serve",
  "build": "vue-cli-service build",
  "report": "vue-cli-service build --report"  //加入该行
},

执行npm run report 打包并生成report。

注意:网上很多说要先安装webpack-bundle-analyzer包,其实不需要安装。

2. 运行npm run report 后,会在 build 的同时,在dist目录会生成一个report.html,打开后可看到各文件占用大小

附:vue项目常用的cdn地址

1.axios

https://cdn.bootcss.com/axios/0.18.0/axios.min.js

2.swiper

  • https://unpkg.com/swiper@5.3.8/css/swiper.css
  • https://unpkg.com/swiper@5.3.8/js/swiper.js
  • https://cdn.jsdelivr.net/npm/vue-awesome-swiper/dist/vue-awesome-swiper.js
< script type=“text/javascript”>
Vue.use(window.VueAwesomeSwiper);
< /script>

3.vue-router

https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js

4.echarts

  • https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js
  • https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js
  • https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js
  • https://cdn.jsdelivr.net/npm/echarts/map/js/world.js

5.element-ui

https://unpkg.com/element-ui/lib/index.js

6.vue

  • vue2:
    https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js
  • vue3:
    https://unpkg.com/vue@3.2.31/dist/vue.global.js

7.vant

  • https://cdn.jsdelivr.net/npm/vant@next/lib/index.css
  • https://cdn.jsdelivr.net/npm/vant@next/lib/vant.min.js

8.vuex

https://unpkg.com/vuex@next

9.moment

  • https://cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js
  • https://cdn.jsdelivr.net/npm/moment@2.29.1/locale/zh-cn.js

10.ant-design-vue

  • https://cdn.jsdelivr.net/npm/ant-design-vue@1.7.2/dist/antd.min.css
  • https://cdn.jsdelivr.net/npm/ant-design-vue@1.7.2/dist/antd.min.js

总结

到此这篇关于Vue如何使用cdn加载资源加快打包速度的文章就介绍到这了,更多相关Vue使用cdn加载资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Vue2的diff算法

    详解Vue2的diff算法

    这篇文章主要介绍了Vue2的diff算法的相关资料,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01
  • Vue3中watch的用法与最佳实践指南

    Vue3中watch的用法与最佳实践指南

    这篇文章主要给大家介绍了关于Vue3中watch用法与最佳实践的相关资料,watch的作用可以监控一个值的变换,并调用因为变化需要执行的方法,可以通过watch动态改变关联的状态,需要的朋友可以参考下
    2021-07-07
  • Vue+Express实现登录状态权限验证的示例代码

    Vue+Express实现登录状态权限验证的示例代码

    这篇文章主要介绍了Vue+Express实现登录状态权限验证的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Vue3自定义Echars组件附带全局配置方式

    Vue3自定义Echars组件附带全局配置方式

    这篇文章主要介绍了Vue3自定义Echars组件附带全局配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue的computed计算属性你了解吗

    Vue的computed计算属性你了解吗

    这篇文章主要为大家详细介绍了Vue的computed计算属性,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Vue实现的父组件向子组件传值功能示例

    Vue实现的父组件向子组件传值功能示例

    这篇文章主要介绍了Vue实现的父组件向子组件传值功能,结合完整实例形式简单分析了vue.js组件传值的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • vue2中provide/inject的使用与响应式传值详解

    vue2中provide/inject的使用与响应式传值详解

    Vue中 Provide/Inject实现了跨组件的通信,下面这篇文章主要给大家介绍了关于vue2中provide/inject的使用与响应式传值的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • vue设置默认首页的操作

    vue设置默认首页的操作

    这篇文章主要介绍了vue设置默认首页的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue的属性、方法、生命周期实例代码详解

    Vue的属性、方法、生命周期实例代码详解

    这篇文章主要介绍了Vue的属性、方法、生命周期的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Vue中点击active并第一个默认选中功能的实现

    Vue中点击active并第一个默认选中功能的实现

    这篇文章主要介绍了Vue中点击active并第一个默认选中功能的实现代码,代码简单易懂,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论