主要的脉络是按照这个

https://juejin.im/post/5c4a6fcd518825469414e062#heading-17

第三方库使用cdn加载

  1. const CompressionPlugin = require('compression-webpack-plugin')
  2. module.exports = {
  3. chainWebpack: config => {
  4. // 省略其它代码 ······
  5. // #region 忽略生成环境打包的文件
  6. var externals = {
  7. vue: 'Vue',
  8. axios: 'axios',
  9. 'element-ui': 'ELEMENT',
  10. 'vue-router': 'VueRouter',
  11. vuex: 'Vuex'
  12. }
  13. config.externals(externals)
  14. const cdn = {
  15. css: [
  16. // element-ui css
  17. '//unpkg.com/element-ui/lib/theme-chalk/index.css'
  18. ],
  19. js: [
  20. // vue
  21. '//cdn.staticfile.org/vue/2.5.22/vue.min.js',
  22. // vue-router
  23. '//cdn.staticfile.org/vue-router/3.0.2/vue-router.min.js',
  24. // vuex
  25. '//cdn.staticfile.org/vuex/3.1.0/vuex.min.js',
  26. // axios
  27. '//cdn.staticfile.org/axios/0.19.0-beta.1/axios.min.js',
  28. // element-ui js
  29. '//unpkg.com/element-ui/lib/index.js'
  30. ]
  31. }
  32. config.plugin('html')
  33. .tap(args => {
  34. args[0].cdn = cdn
  35. return args
  36. })
  37. // #endregion
  38. }
  39. }
  40. }

用Mixin封装store操作

解决频繁的复制-粘贴劳作

  1. // news/index.vue
  2. import Vue from 'vue'
  3. import newsMixin from '@/mixins/news-mixin'
  4. export default {
  5. name: 'news',
  6. mixins: [newsMixin],
  7. data () {
  8. return {}
  9. },
  10. async created () {
  11. await this.NEWS_LIST()
  12. console.log(this.getNewsResponse)
  13. }
  14. }

拆分路由

image.png

image.png

自动导入路由

image.png