vue项目使用CDN引入的配置与易出错点

 更新时间:2022年05月24日 09:53:36   作者:不叫猫先生  
在日常开发过程中,为了减少最后打包出来的体积,我们会用到cdn引入一些比较大的库来解决,下面这篇文章主要给大家介绍了关于vue项目使用CDN引入的配置与易出错点的相关资料,需要的朋友可以参考下

前言

CDN(内容分发网络)指请求资源的方式,即通过script头去请求对应的脚本资源的一种方式,项目里配置之后不需要通过npm包管理工具去下载配置的包。

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

1. 在vue.config.js进行配置

本人对vue、vuex、vue-router、axios、element-ui、echarts进行了cdn引用。(请求element-ui、echarts的cdn较慢)

//生产环境标记
const IS_PRODUCTION = process.env.NODE_ENV === 'production'
//配置引用cdn的js、css地址
const cdn = {
    css: [
        'https://unpkg.com/element-ui@2.13.2/lib/theme-chalk/index.css'
    ],
    js: [
        'https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.min.js',
        'https://cdn.bootcdn.net/ajax/libs/vue-router/3.0.2/vue-router.min.js',
        'https://cdn.bootcdn.net/ajax/libs/vuex/3.1.0/vuex.min.js',
        'https://cdn.bootcdn.net/ajax/libs/axios/0.18.1/axios.min.js',
        'https://unpkg.com/element-ui@2.13.2/lib/index.js',
        'https://cdn.bootcdn.net/ajax/libs/echarts/5.0.1/echarts.min.js'
    ]
}
//配置打包时使用CDN节点(加入externals外部扩展), 忽略打包的第三方库
//左面放package.json中的扩展的名称,右面放项目依赖的名称(项目初始化要用的名称)
const externals = {
  // 属性名称 vue, 表示遇到 import xxx from 'vue' 这类引入 'vue'的,不去 node_modules 中找,而是去找全局变量 Vue(其他的为VueRouter、Vuex、axios、ELEMENT、echarts,注意全局变量是一个确定的值,不能修改为其他值,修改为其他大小写或者其他值会报错,若有异议可留言)
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios',
    'element-ui': 'ELEMENT',
    'echarts': 'echarts'
}
chainWebpack(config) {
        if (IS_PRODUCTION) {
            config.plugin('html').tap(args => {
                args[0].cdn = cdn
                return args
            })
            //视为一个外部库,而不将它打包进来
            config.externals(externals)
        }
    }      

2.在public/index.html文件配置

使用 webpack中自带的插件 html插件进行配置,在 index.html 中增加判断,是否使用 CDN, htmlWebpackPlugin.options 使用的是vue.config中的config.plugin('html')的插件属性。

  <!-- 使用CDN的CSS文件 -->
     <% for (var i in
     htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.css) { %>
     <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="external nofollow"  rel="external nofollow"  rel="preload" as="style" />
     <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="external nofollow"  rel="external nofollow"  rel="stylesheet" />
   <% } %>
    <!-- 使用CDN加速的JS文件,配置在vue.config.js下 -->
   <% for (var i in
     htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.js) { %>
     <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
   <% } %>

3.易出错点 Router is not defined

解决方案: 将Router 改为 ‘VueRouter’Uncaught TypeError: Illegal constructor

解决方案:修改externals 中‘'element-ui’的value

    const externals = {
     'element-ui': 'ELEMENT',
    }

总结

到此这篇关于vue项目使用CDN引入的配置与易出错点的文章就介绍到这了,更多相关vue项目CDN引入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Vue3和Pinia实现网页刷新功能

    使用Vue3和Pinia实现网页刷新功能

    在现代 Web 开发中,保持用户界面的动态性和响应性至关重要,当用户触发某些操作时,例如点击按钮或者完成表单提交,我们往往需要刷新页面的一部分来展示最新的数据,本文将介绍如何使用 Vue 3 和 Pinia 来实现这一功能,需要的朋友可以参考下
    2024-08-08
  • 一个手写的vue放大镜效果

    一个手写的vue放大镜效果

    这篇文章主要介绍了一个手写的vue放大镜,组件使用less,文中给出了示例代码,需要的朋友可以参考下
    2019-08-08
  • vue-photo-preview图片预览失效的问题及解决

    vue-photo-preview图片预览失效的问题及解决

    这篇文章主要介绍了vue-photo-preview图片预览失效的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue3 + elementPlus reset重置表单问题

    vue3 + elementPlus reset重置表单问题

    这篇文章主要介绍了vue3 + elementPlus reset重置表单问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 浅谈vue-lazyload实现的详细过程

    浅谈vue-lazyload实现的详细过程

    本篇文章主要介绍了浅谈vue-lazyload实现的详细过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JavaScript获取echart曲线上任意点位的值详解

    JavaScript获取echart曲线上任意点位的值详解

    这篇文章主要为大家介绍了JavaScript获取echart曲线上任意点位的值详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Vue动态加载图片在跨域时无法显示的问题及解决方法

    Vue动态加载图片在跨域时无法显示的问题及解决方法

    这篇文章主要介绍了解决VUE动态加载图片在跨域时无法显示的问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Vue3的效率提升主要表现在哪些方面示例解析

    Vue3的效率提升主要表现在哪些方面示例解析

    Vue3带来了许多性能优化和效率提升的特性,本文将重点讨论Vue3在静态提升、预字符串化、缓存事件处理函数、Block Tree和PatchFlag方面的改进,我们将通过对比Vue2和Vue3的编译结果来说明这些方面的效率提升
    2023-12-12
  • 深入理解与使用keep-alive(配合router-view缓存整个路由页面)

    深入理解与使用keep-alive(配合router-view缓存整个路由页面)

    这篇文章主要介绍了深入理解与使用keep-alive(配合router-view缓存整个路由页面),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • vue指令v-html使用过滤器filters功能实例

    vue指令v-html使用过滤器filters功能实例

    在本篇文章里我们给大家整理的是关于vue指令v-html使用过滤器filters功能的实例内容,需要的朋友们学习下。
    2019-10-10

最新评论