Browse Source

♻ feat: Auto export public layout

chuzhixin 4 years ago
parent
commit
a2ddb392e6

+ 2 - 2
package.json

@@ -60,7 +60,7 @@
     "zx-comparison": "^1.0.3",
     "zx-count": "^0.3.7",
     "zx-icon": "^1.1.10",
-    "zx-layouts": "^0.6.15",
+    "zx-layouts": "^0.6.16",
     "zx-magnifie": "^0.4.0",
     "zx-markdown-editor": "^0.0.2",
     "zx-player": "^1.0.1",
@@ -86,7 +86,7 @@
     "plop": "^2.7.4",
     "prettier": "^2.1.2",
     "sass": "^1.27.0",
-    "sass-loader": "^10.0.3",
+    "sass-loader": "^10.0.4",
     "stylelint": "^13.7.2",
     "stylelint-config-prettier": "^8.0.2",
     "stylelint-config-recess-order": "^2.2.0",

+ 1 - 1
src/colorfulIcon/index.js

@@ -1,5 +1,5 @@
 import Vue from 'vue'
-import { ColorfullIcon } from '@/layouts/components'
+import ColorfullIcon from 'zx-layouts/ColorfullIcon'
 
 Vue.component('VabColorfulIcon', ColorfullIcon)
 const req = require.context('./svg', false, /\.svg$/),

+ 1 - 3
src/config/config.js

@@ -1,7 +1,5 @@
 /**
  * @description 导出自定义配置
  **/
-const config = {
-  layout: 'vertical',
-}
+const config = {}
 module.exports = config

+ 1 - 0
src/layouts/components/Ad/index.vue

@@ -18,6 +18,7 @@
 <script>
   import { getList } from '@/api/ad'
   export default {
+    name: 'Ad',
     data() {
       return {
         nodeEnv: process.env.NODE_ENV,

+ 0 - 15
src/layouts/components/NavBar/index.vue

@@ -38,23 +38,8 @@
 <script>
   import { mapActions, mapGetters } from 'vuex'
 
-  import {
-    Avatar,
-    Breadcrumb,
-    ErrorLog,
-    FullScreenBar,
-    ThemeBar,
-  } from '@/layouts/components'
-
   export default {
     name: 'NavBar',
-    components: {
-      Avatar,
-      Breadcrumb,
-      ErrorLog,
-      FullScreenBar,
-      ThemeBar,
-    },
     data() {
       return {
         pulse: false,

+ 2 - 25
src/layouts/components/index.js

@@ -1,30 +1,7 @@
 /**
  * @author chuzhixin 1204505056@qq.com (不想保留author可删除)
- * @description 公共布局导出,已封装成npm,便于此后在线升级,
- * 当然也存在一定的弊端,给开发者自定义增加了一定的困难,
- * 如果您一定要进行高度自定义,请仔细阅读讨论群文档,layouts本地化篇。
+ * @description 公共js导出
  */
+
 export { default as ColorfullIcon } from 'zx-layouts/ColorfullIcon'
 export { default as RemixIcon } from 'zx-layouts/RemixIcon'
-export { default as VabDrag } from 'zx-layouts/Drag'
-export { default as VabPermissions } from 'zx-layouts/Permissions'
-export { default as VabQueryForm } from 'zx-layouts/VabQueryForm/export'
-//本地化logo、默认使用svg,如需变更为png更改logo源码即可
-export { default as Logo } from './Logo'
-//本地化头像组件
-export { default as Avatar } from './Avatar'
-//本地化广告组件,如不需要全局搜索ad组件删掉即可
-export { default as Ad } from './Ad'
-//本地化AppMain组件
-export { default as AppMain } from './AppMain'
-export { default as TabsBar } from 'zx-layouts/TabsBar'
-export { default as SideBar } from 'zx-layouts/SideBar'
-//本地化Breadcrumb组件
-export { default as Breadcrumb } from './Breadcrumb'
-export { default as FullScreenBar } from 'zx-layouts/FullScreenBar'
-export { default as ErrorLog } from 'zx-layouts/ErrorLog'
-//本地化ThemeBar组件
-export { default as ThemeBar } from './ThemeBar'
-export { default as TopBar } from 'zx-layouts/TopBar'
-//本地化NavBar组件
-export { default as NavBar } from './NavBar'

+ 20 - 0
src/layouts/export.js

@@ -0,0 +1,20 @@
+/**
+ * @author chuzhixin 1204505056@qq.com (不想保留author可删除)
+ * @description 公共布局自动导出
+ */
+
+import Vue from 'vue'
+
+const requireComponents = require.context('./components', true, /\.vue$/)
+requireComponents.keys().forEach((fileName) => {
+  const componentConfig = requireComponents(fileName)
+  const componentName = componentConfig.default.name
+  Vue.component(componentName, componentConfig.default || componentConfig)
+})
+
+const requireZxLayouts = require.context('zx-layouts', true, /\.vue$/)
+requireZxLayouts.keys().forEach((fileName) => {
+  const componentConfig = requireZxLayouts(fileName)
+  const componentName = componentConfig.default.name
+  Vue.component(componentName, componentConfig.default || componentConfig)
+})

+ 0 - 9
src/layouts/index.vue

@@ -52,19 +52,10 @@
 </template>
 
 <script>
-  import { Ad, AppMain, NavBar, SideBar, TabsBar, TopBar } from './components'
   import { mapActions, mapGetters } from 'vuex'
   import { tokenName } from '@/config/settings'
   export default {
     name: 'Layout',
-    components: {
-      Ad,
-      TopBar,
-      NavBar,
-      SideBar,
-      AppMain,
-      TabsBar,
-    },
     data() {
       return { oldLayout: '' }
     },

+ 1 - 0
src/main.js

@@ -3,6 +3,7 @@ import App from './App'
 import store from './store'
 import router from './router'
 import './plugins'
+import '@/layouts/export'
 /**
  * @author chuzhixin 1204505056@qq.com (不想保留author可删除)
  * @description 生产环境默认都使用mock,如果正式用于生产环境时,记得去掉

+ 2 - 3
src/plugins/index.js

@@ -8,13 +8,12 @@ import '@/colorfulIcon'
 import '@/config/permission'
 import '@/utils/errorLog'
 import './vabIcon'
-
+import VabDrag from 'zx-layouts/Drag'
+import VabPermissions from 'zx-layouts/Permissions'
 import Vab from '@/utils/vab'
-import { VabDrag, VabPermissions, VabQueryForm } from '@/layouts/components'
 import VabCount from 'zx-count'
 
 Vue.use(Vab)
 Vue.use(VabPermissions)
 Vue.use(VabDrag)
-Vue.use(VabQueryForm)
 Vue.use(VabCount)

+ 1 - 1
src/remixIcon/index.js

@@ -1,5 +1,5 @@
 import Vue from 'vue'
-import { RemixIcon } from '@/layouts/components'
+import RemixIcon from 'zx-layouts/RemixIcon'
 
 Vue.component('VabRemixIcon', RemixIcon)
 const req = require.context('./svg', false, /\.svg$/),