unknown 3 vuotta sitten
vanhempi
commit
d2eb2c6ae2
9 muutettua tiedostoa jossa 54 lisäystä ja 83 poistoa
  1. 5 0
      .env.qiankun
  2. 8 16
      config/cdn.js
  3. 4 6
      package.json
  4. 6 33
      src/main.js
  5. 6 4
      src/router/router.js
  6. 3 1
      src/store/index.js
  7. 2 2
      src/views/work-desktop/WorkDesktop.vue
  8. 15 21
      vue.config.js
  9. 5 0
      yarn.lock

+ 5 - 0
.env.qiankun

@@ -0,0 +1,5 @@
+NODE_ENV=qiankun
+VUE_APP_BASE_API='http://localhost:8081/bigmember'
+VUE_APP_BASE_URL='/'
+VUE_APP_MOCK=false
+VUE_APP_BASE_PUBLIC='http://localhost:8081/'

+ 8 - 16
config/cdn.js

@@ -2,22 +2,14 @@ exports.cdn = {
   css: [
     // '//unpkg.com/element-ui@2.10.1/lib/theme-chalk/index.css'
   ],
-  jsdelivr: [
-    '//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js',
-    '//cdn.jsdelivr.net/npm/vue-router@3.1.5/dist/vue-router.min.js',
-    '//cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js',
-    '//cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js',
-    '//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js',
-    '//cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
-    '//cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js'
-  ],
   js: [
-    '//cdn-common.jianyu360.cn/cdn/lib/vue/2.6.11/vue.min.js',
-    '//cdn-common.jianyu360.cn/cdn/lib/vue-router/3.1.5/vue-router.min.js',
-    '//cdn-common.jianyu360.cn/cdn/lib/vuex/3.4.0/vuex.min.js',
-    '//cdn-common.jianyu360.cn/cdn/lib/axios/0.19.2/axios.min.js',
-    '//cdn-common.jianyu360.cn/cdn/lib/echarts/4.8.0/echarts.min.js',
-    '//cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
-    '//cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js'
+    '//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/vue-router/3.1.5/vue-router.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/vuex/3.4.0/vuex.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/axios/0.19.2/axios.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/lodash/4.17.21/lodash.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js',
+    // '//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js',
+    '//cdn-common.jianyu360.com/cdn/lib/moment/2.29.1/min/moment.min.js'
   ]
 }

+ 4 - 6
package.json

@@ -5,9 +5,9 @@
   "scripts": {
     "serve": "vue-cli-service serve --port 8080",
     "serve:alone": "vue-cli-service serve --mode alone",
-    "build": "vue-cli-service build",
-    "build:linux": "rm -rf node_module/.cache && vue-cli-service build",
+    "serve:qiankun": "vue-cli-service serve --mode qiankun",
     "build": "vue-cli-service build --mode production",
+    "build:linux": "rm -rf node_module/.cache && vue-cli-service build",
     "build:test": "vue-cli-service build --mode test",
     "lint": "vue-cli-service lint --fix",
     "analyzer": "use_analyzer=true vue-cli-service build --mode production",
@@ -18,18 +18,17 @@
     "core-js": "^3.4.3",
     "echarts": "4.8.0",
     "element-ui": "^2.15.1",
+    "jquery": "^3.6.0",
     "lodash": "^4.17.21",
     "moment": "^2.29.1",
-    "single-spa-vue": "^1.5.4",
-    "systemjs-webpack-interop": "^1.1.2",
     "v-charts": "1.19.0",
     "vue": "^2.6.10",
     "vue-cookies": "^1.7.4",
     "vue-router": "^3.1.3",
-    "jquery": "^3.6.0",
     "vuex": "^3.6.2"
   },
   "devDependencies": {
+    "@jianyu/easy-inject-qiankun": "^0.1.1",
     "@vue/cli-plugin-babel": "^4.1.0",
     "@vue/cli-plugin-eslint": "~4.5.0",
     "@vue/cli-plugin-router": "^4.1.0",
@@ -44,7 +43,6 @@
     "eslint-plugin-promise": "^4.2.1",
     "eslint-plugin-standard": "^4.0.0",
     "eslint-plugin-vue": "^6.2.2",
-    "jquery": "^3.6.0",
     "sass": "^1.26.5",
     "sass-loader": "^8.0.2",
     "vue-cli-plugin-single-spa": "^1.0.1",

+ 6 - 33
src/main.js

@@ -2,11 +2,10 @@ import Vue from 'vue'
 import App from './App.vue'
 import store from './store/'
 import router from './router/'
+import { easySubAppRegister } from '@jianyu/easy-inject-qiankun'
 import VueCookies from 'vue-cookies'
-import singleSpaVue from 'single-spa-vue'
 import { Loading, Message, MessageBox } from 'element-ui'
 import echarts from 'echarts'
-// import axios from 'axios'
 import Toast from './components/toast/index'
 import '@/utils/'
 import '@/utils/common'
@@ -21,36 +20,10 @@ Vue.prototype.$alert = MessageBox.alert
 Vue.prototype.$confirm = MessageBox.confirm
 Vue.config.productionTip = false
 
-// 正式环境下屏蔽console.log
-if (process.env.NODE_ENV === 'production') {
-  const print = window.console.log
-  if (window.localStorage.getItem('log') === '1') {
-    window.console.log = print
-  } else {
-    window.console.log = () => null
-  }
-} else {}
-
-const vueOptions = {
-  el: '#single-spa-app',
+export const { bootstrap, mount, unmount } = easySubAppRegister({
+  Vue,
   router,
   store,
-  render: (h) => h(App)
-}
-
-let vueLifecycles = {}
-if (process.env.VUE_APP_ALONE) {
-  delete vueOptions.el
-  new Vue(vueOptions).$mount('#app')
-} else {
-  vueLifecycles = singleSpaVue({
-    Vue,
-    appOptions: vueOptions
-  })
-}
-
-export const bootstrap = vueLifecycles.bootstrap
-export const mount = vueLifecycles.mount
-export const unmount = vueLifecycles.unmount
-
-export default vueLifecycles
+  App,
+  el: '#app'
+}) || {}

+ 6 - 4
src/router/router.js

@@ -1,13 +1,15 @@
 import Vue from 'vue'
-import Router from 'vue-router'
+import VueRouter from 'vue-router'
 import routers from './routers'
 import vipRouters from './svip-routers'
 
-Vue.use(Router)
+if (process.env.NODE_ENV !== 'production') {
+  Vue.use(VueRouter)
+}
 
-const router = new Router({
+const router = new VueRouter({
   mode: 'history',
-  base: process.env.VUE_APP_BASE_URL,
+  base: window.__RouterBase || process.env.VUE_APP_BASE_URL,
   routes: [
     ...routers,
     ...vipRouters,

+ 3 - 1
src/store/index.js

@@ -4,7 +4,9 @@ import Vuex from 'vuex'
 import user from './user'
 import forcast from './forcast'
 
-Vue.use(Vuex)
+if (process.env.NODE_ENV !== 'production') {
+  Vue.use(Vuex)
+}
 
 export default new Vuex.Store({
   state: {

+ 2 - 2
src/views/work-desktop/WorkDesktop.vue

@@ -16,10 +16,10 @@
       <HomeList :loading="setload.loading4" ref="sublist4" @getDetail="getDetail" :stepList="stepList" @thisAnnouncement="thisAnnouncement" @addSet="addSet" @linkMore="linkMore" :getlist="followList" model="model-4">
         <span slot="header">项目关注</span>
       </HomeList>
-      <HomeList :loading="setload.loading5" ref="sublist5" v-if="info.power.indexOf(10) !== -1" @getDetail="getDetail" @addSet="addSet" @linkMore="linkMore" :getlist="weekList" model="model-week">
+      <HomeList :loading="setload.loading5" ref="sublist5" v-if="info.power && info.power.indexOf(10) !== -1" @getDetail="getDetail" @addSet="addSet" @linkMore="linkMore" :getlist="weekList" model="model-week">
         <span slot="header">周报</span>
       </HomeList>
-      <HomeList :loading="setload.loading6" ref="sublist6" v-if="info.power.indexOf(10) !== -1" @getDetail="getDetail" @addSet="addSet" @linkMore="linkMore" :getlist="monthList" model="model-month">
+      <HomeList :loading="setload.loading6" ref="sublist6" v-if="info.power && info.power.indexOf(10) !== -1" @getDetail="getDetail" @addSet="addSet" @linkMore="linkMore" :getlist="monthList" model="model-month">
         <span slot="header">月报</span>
       </HomeList>
     </div>

+ 15 - 21
vue.config.js

@@ -1,3 +1,4 @@
+const packageName = require('./package.json').name
 const webpack = require('webpack')
 const { cdn, getProxyOfDomain, getProxyOfIp } = require('./config')
 
@@ -6,10 +7,10 @@ const external = {
   'vue-router': 'VueRouter',
   vuex: 'Vuex',
   axios: 'axios',
-  // echarts: 'echarts',
-  jquery: '$',
   lodash: '_',
-  moment: 'moment'
+  echarts: 'echarts',
+  // moment: 'moment',
+  jquery: '$'
 }
 
 module.exports = {
@@ -93,24 +94,14 @@ module.exports = {
   chainWebpack: config => {
     // single-spa
     if (!process.env.VUE_APP_ALONE) {
-      
       if (process.env.NODE_ENV === 'production') {
         // 生产环境配置
-        // config.externals(external)
-        // config.plugin('html').tap(args => {
-        //   // html中添加cdn
-        //   args[0].cdn = cdn
-        //   return args
-        // })
-        // config.output.filename('./js/[name].[chunkhash:8].js')
-        config.output.filename = function (pathData) {
-          return pathData.chunk.name === 'app' ? './js/[name].js' : './js/[name].[chunkhash:8].js'
-        }
-        config.output.chunkFilename('./js/[name].[chunkhash:8].js')
-        // config.output.chunkFilename = function (pathData) {
-        //   console.log(JSON.stringify(pathData.chunk), '11')
-        //   return pathData.chunk.name === 'app' ? './js/[name].js' : './js/[name].[chunkhash:8].js';
-        // };
+        config.externals(external)
+        config.plugin('html').tap(args => {
+          // html中添加cdn
+          args[0].cdn = cdn
+          return args
+        })
 
         config.optimization.minimize(true)
           .minimizer('terser')
@@ -123,7 +114,6 @@ module.exports = {
       } else {
         config.devServer.set('inline', false)
         config.devServer.set('hot', true)
-        config.output.filename('js/[name].js')
       }
     }
 
@@ -134,8 +124,12 @@ module.exports = {
         .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
     }
   },
-  filenameHashing: false,
   configureWebpack: {
+    output: {
+      library: 'bigMemberSubApp',
+      libraryTarget: 'umd',
+      jsonpFunction: `webpackJsonp_${packageName}`
+    },
     plugins: [
       new webpack.ProvidePlugin({
         jQuery: 'jquery',

+ 5 - 0
yarn.lock

@@ -917,6 +917,11 @@
     cssnano-preset-default "^4.0.0"
     postcss "^7.0.0"
 
+"@jianyu/easy-inject-qiankun@^0.1.1":
+  version "0.1.1"
+  resolved "http://192.168.3.207:4873/@jianyu%2feasy-inject-qiankun/-/easy-inject-qiankun-0.1.1.tgz#0671a8b1453bc0ccbbccde3855bfc8b1e58f7ff5"
+  integrity sha512-9DbSSMZ3L4OA7WGoCsOd7tkfcgElfD2kbsrQONB5NtIvKFH8qbbgPzK4NAmQAtxqc8AyaEWgZ/Av872QegomJw==
+
 "@mrmlnc/readdir-enhanced@^2.2.1":
   version "2.2.1"
   resolved "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"