vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化
创始人
2024-05-28 19:51:20
0

vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化

  • 未引入 CDN前 main.js
  • 更改CDN方式引入
    • 在 vue.config 中引入 CDN
    • index.html 加载 cdn资源
    • 使用CDN引入资源后的main.js
    • 如果引入CDN后 组件不生效
  • CDN 服务商推荐

未引入 CDN前 main.js

// 依赖使用 npm 方式引入
import Vue from 'vue'
import 'default-passive-events'
import Cookies from 'js-cookie'import 'normalize.css/normalize.css' // a modern alternative to CSS resetsimport Element from 'element-ui' // vue-element-admin-manage 使用的是 2.13.2 版本,现在升级为 2.15.6版本
import './styles/element-variables.scss'
import '@/styles/index.scss' // global cssimport App from './App'
import store from './store'
import router from './router'import './icons' // icon
import './permission' // permission control
import './utils/error-log' // error log
import * as filters from './filters' // global filters
/*** 官方文档:http://www.umyui.com/umycomponent/noticeBefore*/
import UmyUi from 'umy-ui'
// 引入样式
import 'umy-ui/lib/theme-chalk/index.css'
/*** 打印插件 参考地址*/
import Print from 'vue-print-nb'Vue.use(UmyUi)
Vue.use(Print)
// 这是给ElementUI组件库组件设置默认参数
Vue.use(Element, {size: Cookies.get('size') || 'medium', // set element-ui default sizezIndex: 3000
})// register global utility filters
Object.keys(filters).forEach(key => {Vue.filter(key, filters[key])
})Vue.config.productionTip = false
const vueMain = new Vue({el: '#app',router,store,render: h => h(App)
})
export default vueMain

更改CDN方式引入

在 vue.config 中引入 CDN

文件: vue.config.js

// CDN资源
const cdn = {externals: {vue: 'Vue','vue-router': 'VueRouter',vuex: 'Vuex',axios: 'axios','element-ui': 'ELEMENT','umy-ui': 'umy-ui', // umy-ui'vue-count-to': 'vue-count-to','vue-i18n': 'vue-i18n','vue-splitpane': 'vue-splitpane','vuedraggable': 'vuedraggable','xlsx': 'xlsx','js-md5': ''},// externals 资源对应 css cdn地址css: ['https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/theme-chalk/index.min.css','https://cdn.jsdelivr.net/npm/umy-ui@1.1.6/lib/theme-chalk/index.min.css'],// externals 资源对应 JS cdn地址js: ['https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js','https://cdn.jsdelivr.net/npm/vue-router@3.0.2/dist/vue-router.min.js','https://cdn.jsdelivr.net/npm/vuex@3.1.0/dist/vuex.min.js','https://cdn.jsdelivr.net/npm/axios@0.18.1/dist/axios.min.js','https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/index.min.js','https://cdn.jsdelivr.net/npm/umy-ui@1.1.6/lib/index.min.js','https://cdn.jsdelivr.net/npm/vue-count-to@1.0.13/dist/vue-count-to.min.js','https://cdn.jsdelivr.net/npm/vue-i18n@9.2.2/dist/vue-i18n.global.min.js','https://cdn.jsdelivr.net/npm/vue-splitpane@1.0.4/dist/vue-split-pane.min.js','https://cdn.jsdelivr.net/npm/vuedraggable@2.20.0/dist/vuedraggable.umd.min.js','https://cdn.jsdelivr.net/npm/xlsx@0.14.1/dist/xlsx.full.min.js','https://cdn.jsdelivr.net/npm/js-md5@0.7.3/build/md5.min.js']
}module.exports = {publicPath: './',outputDir: 'dist',assetsDir: 'static',lintOnSave: process.env.NODE_ENV === 'development',productionSourceMap: false, // 打包成 web页面 使用,一般建议 false,不然会生成很多map文件chainWebpack(config) {// 引入CDN// webpack需要排除的依赖名称和挂载在window上的对象属性名称config.set('externals', cdn.externals)// 这里的作用是在后面index.html页面中通过link,script标签加载这些cdn链接。config.plugin('html').tap(args => {args[0].cdn = cdnreturn args})}
}

index.html 加载 cdn资源

文件: inidex.html, 一般是在 public 文件夹下


favicon.ico"><%= webpackConfig.name %><% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>" rel="preload" as="style" />" rel="stylesheet" /><% } %><% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>" rel="preload" as="script" /><% } %>
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %><% } %>

使用CDN引入资源后的main.js

// 部分 依赖使用 cdn方式引入
import Vue from 'vue'
import 'default-passive-events'
import 'normalize.css/normalize.css' // a modern alternative to CSS resets
import '@/styles/index.scss' // global cssimport App from './App'
import store from './store'
import router from './router'import './icons' // icon
import './permission' // permission control
import './utils/error-log' // error log
import * as filters from './filters' // global filters/*** 打印插件, 没有CDN资源,不使用 CDN引入 参考地址*/
import Print from 'vue-print-nb'
Vue.use(Print)// register global utility filters
Object.keys(filters).forEach(key => {Vue.filter(key, filters[key])
})Vue.config.productionTip = false
const vueMain = new Vue({el: '#app',router,store,render: h => h(App)
})
export default vueMain

如果引入CDN后 组件不生效

请检查 引入的时候 组件名称是否 是 CDN资源中的别名
在这里插入图片描述

CDN 服务商推荐

BootCDN: BootCDN

jsDelivr: jsDelivr

相关内容

热门资讯

你的晚安是我的早安是什么歌曲 你的晚安是我的早安是什么歌曲苏天伦《你的早安是我的晚安》“你的晚安是我的早安”是单小源的歌曲《东京遇...
积极进取的小故事 积极进取的小故事现代的普通人,不要名人的。不能与别人重复,尽快回答   啄木鸟的故事       啄...
熊出没之探险日记3什么时候播出... 熊出没之探险日记3什么时候播出?熊出没之探险日记3,春节前播放。熊出没只是探险日记三2020年5月4...
谁知道所有有关“七”的歌?拜托... 谁知道所有有关“七”的歌?拜托了各位 谢谢就是歌曲名里有“七”这个字的!谢谢七月七迅谈日晴 看我七十...
求一本小说 女主穿越了三次 每... 求一本小说 女主穿越了三次 每次都在福临身边 后来怀孕了孩子被打掉了那个 女主叫什么雯?那个女主就是...
如果记忆不说话,流年也会开出花... 如果记忆不说话,流年也会开出花的基本信息书 名:《如果记忆不弯饥好说话,流年也会开出花》埋铅 作 者...
你好,旧时光漫画版在哪里可以看... 你好,旧时光漫画版在哪里可以看?暂时在绘心上连载
一首英文歌,男的组合唱的,MV... 一首英文歌,男的组合唱的,MV是一个婚礼的过程。求歌名。是不是darin的can'tstoplove...
为什么很多人喜欢用胶片相机? 为什么很多人喜欢用胶片相机?有一种情怀叫做“怀旧“吧,现在数码相机越来越普遍了,已经到了”全民摄影“...
女主先爱上男主,男主却不喜欢女... 女主先爱上男主,男主却不喜欢女主或者是另有所爱,最后女主男主还是在一起的穿越小说。有木有再生缘:我的...
爱情失恋伤感句子 爱情失恋伤感句子越是美好的从前,越幸福的曾经,现在只能带来锥心的疼痛,痛到撕心裂肺,肝肠寸断,终于痛...
24岁穿这个会不会显老 24岁穿这个会不会显老有点显老,这个颜色款式,颜色有点暗,没有活力,属于那种气质佳,长得高雅的女人,...
哈尔的移动城堡英语版 哈尔的移动城堡英语版可以发给我吗度盘~请查收~
秦时明月之万里长城什么时候播 秦时明月之万里长城什么时候播据说是今年暑假开播别急,官网什么的信他你就输了,12年之前底应该会出,杭...
孩子会得抽动症吗? 孩子会得抽动症吗?我天生的气性比较大,有时跟别人斗嘴时候就会手脚哆嗦,麻木,我问一下这是不是抽动症就...
亨德尔一生为音乐献出了怎样的贡... 亨德尔一生为音乐献出了怎样的贡献?亨德尔一生写了歌剧41部,清唱剧21部,以及大量的管乐器与弦乐器的...
礼仪起源和发展的经典故事? 礼仪起源和发展的经典故事?一、礼仪的起源;1、天神生礼仪;2、礼为天地人的统一体;3、礼产生于人的自...
描写桂林山水的句子有哪些? 描写桂林山水的句子有哪些?天下风光数桂林有杨万里的“梅花五岭八桂林,青罗带绕碧玉簪”;有邹应龙的“无...
避免与强敌正面对决的成语 避免与强敌正面对决的成语避免与强敌正面对决的成语避实就虚 【近义】避重就轻、避难就易、声东击西【反义...
多愁善感类的成语 多愁善感类的成语心细如发【解释】:极言小心谨慎,考虑周密。亦作“心细于发”。【出自】:吴梅《题天香石...