vue3+element-plus配置cdn


1,項目配置


最近在做一個項目,項目配置版本如下:

  • vue:3.2.6
  • vue-router:4.0.11
  • vuex:4.0.2
  • axios:0.21.4
  • element-plus:1.2.0-beta.6
  • typescript:4.1.5
  • sass:1.26.5

下面分享一下,如上配置的vue3項目,如何配置cdn加速

悄悄插一句,element-plus坑真多 T_T

2,CDN介紹


介紹下常見的免費cdn網站

2.1,常見cdn網站


在這里吐槽一下,BootCDN和Staticfile CDN里面能找到的element-plus最高版本只有1.0.2.beta.71,我暈,人家都出到1.3.0-beta.4了!


2.2,通過UNPKG查找需要的cdn資源


BootCDNStaticfile CDN簡單明了的搜索方式就不說了,這里講一下UNPKG搜索cdn資源的方式。

cdn文件路徑格式:https://unpkg.com/:package@:version/:file

路徑解析如下圖:

url解釋
以下是幾個cdn路徑的例子:

// element-plus
https://unpkg.com/element-plus@1.2.0-beta.6/dist/index.full.js

// axios
https://unpkg.com/browse/axios@0.21.4/dist/axios.min.js

直接使用資源名后面加/,可以查看文件夾目錄,比如:https://unpkg.com/browse/axios@0.21.4/,復制進瀏覽器地址欄,可看見如下目錄:


目錄


打開后自己需要什么文件可以自己找,很方便,其余更多黑科技自行百度。

3,實戰代碼


按如下配置,操作方式基本一樣,文件的cdn版本自行替換。


vue.config.js


const CDN = {
  css: [
    'https://cdn.bootcdn.net/ajax/libs/normalize/8.0.1/normalize.min.css',
    'https://unpkg.com/browse/element-plus@1.2.0-beta.6/theme-chalk/index.css'
  ],
  js: [
    'https://cdn.bootcdn.net/ajax/libs/vue/3.2.6/vue.global.js',
    'https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.11/vue-router.global.js',
    'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.2/vuex.global.js',
    'https://cdn.bootcdn.net/ajax/libs/axios/0.21.4/axios.js',
    'https://unpkg.com/element-plus@1.2.0-beta.6/dist/index.full.js',
    'https://unpkg.com/browse/element-plus@1.2.0-beta.6/lib/locale/lang/zh-cn.js'
  ]
};

let objExternals = {
  vue: 'Vue',
  axios: 'axios',
  vuex: 'Vuex',
  'vue-router': 'VueRouter',
  'element-plus': 'ElementPlus'
}

module.exports = {
  publicPath: '/',
  assetsDir: './assets',
  chainWebpack: config => {
  	// 配置,將當前頁定義的cdn值傳到主頁面(index.html)
    config.plugin('html').tap(args => {
    // 這里我是除本地環境,其余均使用CDN,可自己選擇是否配置
      args[0].cdn = process.env.VUE_APP_STAGE === 'LOCAL' ? {} : CDN
      return args;
    });
  },
  configureWebpack: {
    devServer: {
    	//...與本文無關
    },
    resolve: {
    	//...與本文無關
    },
    plugins: [
    	//...與本文無關
    ],
    // 定義webpack打包配置
    externals: process.env.VUE_APP_STAGE === 'LOCAL' ? {} : objExternals 
  }
}

index.html


head標簽里加上如下:

<% for (var i in htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.css) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" />
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" />
  <% } %>

body標簽里加上如下:

<% for (let i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
    <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
  <% } %>

main.ts


import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/lib/locale/lang/zh-cn'
import App from '@/App.vue'
import router from '@/router'
import store from '@/store'

const app = createApp(App)
app.use(router)
app.use(store)
app.use(ElementPlus, { locale: zhCn }) // 配置中文
app.mount('#app')

4,后記


確實配了cdn后打包文件小了很多,不過如果cdn掛了,你的項目也就掛了。







如果看了覺得有幫助的,我是@上進的鵬多多,歡迎 點贊 關注 評論;END


PS:在本頁按F12,在console中輸入document.querySelectorAll('.diggit')[0].click(),有驚喜哦


面向百度編程

公眾號

weixinQRcode.png

往期文章

個人主頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM