赞
踩
根据需要自行切换相关CDN
依赖引用并非全部可用,有的js会不兼容, 自行尝试通过可用后在进行引用操作!
Vue的各种版本介绍:
1. cjs(两个版本都是完整版,包含编译器)
vue.cjs.js
vue.cjs.prod.js(开发版,代码进行了压缩)
2. global(这四个版本都可以在浏览器中直接通过scripts标签导入,导入之后会增加一个全局的Vue对象)
vue.global.js(完整版,包含编译器和运行时)
vue.global.prod.js(完整版,包含编译器和运行时,这是开发版本,代码进行了压缩)
vue.runtime.global.js
vue.runtime.global.prod.js
3. browser(四个版本都包含esm,浏览器的原生模块化方式,可以直接通过<script type=“module” />的方式来导入模块)
vue.esm-browser.js
vue.esm-browser.prod.js
vue.runtime.esm-browser.js
vue.runtime.esm-browser.prod.js
4. bundler(这两个版本没有打包所有的代码,只会打包使用的代码,需要配合打包工具来使用,会让Vue体积更小)
vue.esm-bundler.js
bue.runtime.esm-bundler.js
通过对比可看出,通过CDN引入依赖包后,打包大小明显小很多
无需多言,照做即可
<!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title><%= htmlWebpackPlugin.options.title %></title> <!--css样式文件的加载--> <% 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" /> <% } %> <!--js文件的加载--> <% for (let i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script> <% } %> </head> <body> <noscript> <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id="app"></div> </body> </html>
须知:
const cdn = { // 开发环境 dev: { css: [], js: [] }, // 生产环境 build: { css: ['https://unpkg.com/element-plus/lib/theme-chalk/index.css'], js: [ 'https://cdn.bootcdn.net/ajax/libs/vue/3.0.11/vue.global.js', 'https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.6/vue-router.global.js', 'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.0/vuex.global.js', 'https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js', 'https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/index.full.js', 'https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/umd/locale/zh-cn.js', 'https://unpkg.com/dayjs/locale/zh-cn.js' ] } };
let objExternals = {
};
function externalsSet() {
if (IS_PROD) {
objExternals = {
vue: ‘Vue’,// 这里以Vue为示例
axios: ‘axios’,
vuex: ‘Vuex’,
‘vue-router’: ‘VueRouter’,
‘element-plus’: ‘ElementPlus’
};
}
}
externalsSet(); //该方法是用来判断当前是否为打包模式的
module.exports={
// 自定义webpack配置
configureWebpack: {
externals: objExternals
},
}
chainWebpack: config => {
config.plugin('html').tap(args => {
if (IS_PROD) {
args[0].cdn = cdn.build;
}
return args;
});
}
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
const app = createApp(App);
app.use(ElementPlus);
ElementPlus.locale(ElementPlus.lang.zhCn);
app.use(router);
app.use(store);
app.mount(‘#app’);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。