vue項(xiàng)目使用CDN引入的配置與易出錯(cuò)點(diǎn)
前言
CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))指請(qǐng)求資源的方式,即通過(guò)script頭去請(qǐng)求對(duì)應(yīng)的腳本資源的一種方式,項(xiàng)目里配置之后不需要通過(guò)npm包管理工具去下載配置的包。
目的:將引用的外部js、css文件剝離開(kāi)來(lái),不編譯到vendor.js中,而是用資源的形式引用,這樣瀏覽器可以使用多個(gè)線(xiàn)程異步將vendor.js、外部的js等加載下來(lái),達(dá)到加速首頁(yè)展示效果。
1. 在vue.config.js進(jìn)行配置
本人對(duì)vue、vuex、vue-router、axios、element-ui、echarts進(jìn)行了cdn引用。(請(qǐng)求element-ui、echarts的cdn較慢)
//生產(chǎn)環(huán)境標(biāo)記
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'
]
}
//配置打包時(shí)使用CDN節(jié)點(diǎn)(加入externals外部擴(kuò)展), 忽略打包的第三方庫(kù)
//左面放package.json中的擴(kuò)展的名稱(chēng),右面放項(xiàng)目依賴(lài)的名稱(chēng)(項(xiàng)目初始化要用的名稱(chēng))
const externals = {
// 屬性名稱(chēng) vue, 表示遇到 import xxx from 'vue' 這類(lèi)引入 'vue'的,不去 node_modules 中找,而是去找全局變量 Vue(其他的為VueRouter、Vuex、axios、ELEMENT、echarts,注意全局變量是一個(gè)確定的值,不能修改為其他值,修改為其他大小寫(xiě)或者其他值會(huì)報(bào)錯(cuò),若有異議可留言)
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
})
//視為一個(gè)外部庫(kù),而不將它打包進(jìn)來(lái)
config.externals(externals)
}
}
2.在public/index.html文件配置
使用 webpack中自帶的插件 html插件進(jìn)行配置,在 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.易出錯(cuò)點(diǎn) Router is not defined



解決方案: 將Router 改為 ‘VueRouter’Uncaught TypeError: Illegal constructor

解決方案:修改externals 中‘'element-ui’的value
const externals = {
'element-ui': 'ELEMENT',
}
總結(jié)
到此這篇關(guān)于vue項(xiàng)目使用CDN引入的配置與易出錯(cuò)點(diǎn)的文章就介紹到這了,更多相關(guān)vue項(xiàng)目CDN引入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Vue3和Pinia實(shí)現(xiàn)網(wǎng)頁(yè)刷新功能
在現(xiàn)代 Web 開(kāi)發(fā)中,保持用戶(hù)界面的動(dòng)態(tài)性和響應(yīng)性至關(guān)重要,當(dāng)用戶(hù)觸發(fā)某些操作時(shí),例如點(diǎn)擊按鈕或者完成表單提交,我們往往需要刷新頁(yè)面的一部分來(lái)展示最新的數(shù)據(jù),本文將介紹如何使用 Vue 3 和 Pinia 來(lái)實(shí)現(xiàn)這一功能,需要的朋友可以參考下2024-08-08
vue-photo-preview圖片預(yù)覽失效的問(wèn)題及解決
這篇文章主要介紹了vue-photo-preview圖片預(yù)覽失效的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue3?+?elementPlus?reset重置表單問(wèn)題
這篇文章主要介紹了vue3?+?elementPlus?reset重置表單問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
淺談vue-lazyload實(shí)現(xiàn)的詳細(xì)過(guò)程
本篇文章主要介紹了淺談vue-lazyload實(shí)現(xiàn)的詳細(xì)過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
JavaScript獲取echart曲線(xiàn)上任意點(diǎn)位的值詳解
這篇文章主要為大家介紹了JavaScript獲取echart曲線(xiàn)上任意點(diǎn)位的值詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Vue動(dòng)態(tài)加載圖片在跨域時(shí)無(wú)法顯示的問(wèn)題及解決方法
這篇文章主要介紹了解決VUE動(dòng)態(tài)加載圖片在跨域時(shí)無(wú)法顯示的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
深入理解與使用keep-alive(配合router-view緩存整個(gè)路由頁(yè)面)
這篇文章主要介紹了深入理解與使用keep-alive(配合router-view緩存整個(gè)路由頁(yè)面),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vue指令v-html使用過(guò)濾器filters功能實(shí)例
在本篇文章里我們給大家整理的是關(guān)于vue指令v-html使用過(guò)濾器filters功能的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-10-10

