普歌-vue-template-amdin用webpack配置CND加速/打包忽略element、vue等(亲测有效)

普歌-vue-template-amdin用webpack配置CND加速详细教程

依旧废话两句:项目不优化,用户两行泪
客官看图玩笑

回归正题,配置流程

1. 把main.js分成两个js,一个是开发环境下的(main-dev.js),一个是生产环境下的(main-prod.js)

第一步

  • main-dev.js文件中的elementui、echarts等还是正常引用(我这有echarts、element等)
import Vue from "vue";
import "normalize.css/normalize.css"; // A modern alternative to CSS resets
import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts
Vue.use(echarts)
import Blob from './vendor/Blob'
import Export2Excel from './vendor/Export2Excel.js'
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import locale from "element-ui/lib/locale/lang/zh-CN"; // lang i18n
import "@/styles/index.scss"; // global css
import App from "./App";
import router from "./router";
import store from "./store";
import "@/icons"; // icon
import "@/permission"; // permission control
Vue.use(ElementUI, { locale });
Vue.config.productionTip = false;
new Vue({
  el: "#app",
  router,
  store,
  render: h => h(App)
});
  • main-prod.js中的element、echarts就可以注释了,因为打包也不会打包进去
	import Vue from "vue";
	import "normalize.css/normalize.css"; // A modern alternative to CSS resets
	// import * as echarts from "echarts";
	// Vue.prototype.$echarts = echarts;
	// Vue.use(echarts);
	// import ElementUI from "element-ui";
	// import "element-ui/lib/theme-chalk/index.css";
	// import locale from "element-ui/lib/locale/lang/zh-CN"; // lang i18n
	import "@/styles/index.scss"; // global css
	import App from "./App";
	import router from "./router";
	import store from "./store";
	import "@/icons"; // icon
	import "@/permission"; // permission control
	// Vue.use(ElementUI, { locale });
	Vue.config.productionTip = false;
	new Vue({
	  el: "#app",
	  router,
	  store,
	  render: h => h(App)
});
2. 在vue-admin中有一个build文件,是专门处理打包的文件,比如webpack
  • 在build/webpack.base.conf.js中把entry入口去掉
    入口去掉
  • 分别在webpack.dev.conf.js和webpack.prod.conf.js中加入各自的入口entry
    在这里插入图片描述在这里插入图片描述
3. 在webpack.prod.conf.js中配置externals(不打包哪些)
externals: {
   vue: "Vue",
    "vue-router": "VueRouter",
    "element-ui": "ELEMENT",
    axios: "axios",
    echarts: "echarts"
},

配置打包

4. 在webpack.prod.conf.js下的plugin中new HtmlWebpackPlugin修改添加CND(cdn链接的版本号要与package.json中的版本一致)
   cdn: {
       css: [
         // element-ui css
         "https://cdn.bootcss.com/element-ui/2.13.2/theme-chalk/index.css"
       ],
       js: [
         // vue  vue-router
         "https://cdn.bootcss.com/vue/2.5.17/vue.min.js",
         "https://cdn.bootcdn.net/ajax/libs/vue-router/3.0.1/vue-router.min.js",
         "https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js",
         //echarts
         "https://cdn.bootcdn.net/ajax/libs/echarts/5.0.0/echarts.min.js",
         // element-ui js
         "https://cdn.bootcss.com/element-ui/2.13.2/index.js",
         "https://cdn.bootcss.com/element-ui/2.13.2/locale/zh-CN.min.js"
       ]
    }

在这里插入图片描述

5. 找到webpack.prod.conf.js中的optimization,把elementUI配置项去掉

在这里插入图片描述

最后在index.html文件中用htmlWebpackPlugin下的配置项添加cdn文件
 <head>
    <% if(htmlWebpackPlugin.options.cdn) {%> <% for(var css of
       htmlWebpackPlugin.options.cdn.css) { %>
       <link rel="stylesheet" href="<%=css%>" />
    <% } %> <% } %>
  </head>
  <body>
    <div id="app"></div>
    <% if(htmlWebpackPlugin.options.cdn) {%> <% for(var js of
    htmlWebpackPlugin.options.cdn.js) { %>
    <script src="<%=js%>"></script>
    <% } %> <% } %>
  </body>

打包上线没有报错,功能一切正常

在这里插入图片描述
更多推荐:wantLG的《普歌-多种跨域方式以及解决跨域方案(jsonp、cros、vue中跨域proxy、nginx反向代理跨域)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值