Просмотр исходного кода

refactor: 重构main.js文件,优化导入顺序和代码结构

From-wh 9 месяцев назад
Родитель
Сommit
ae1e9f7cfd
1 измененных файлов с 58 добавлено и 49 удалено
  1. 58 49
      template/admin/src/main.js

+ 58 - 49
template/admin/src/main.js

@@ -8,26 +8,63 @@
 // | Author: CRMEB Team <admin@crmeb.com>
 // +----------------------------------------------------------------------
 
+// Vue 核心
 import Vue from 'vue';
 import App from './App';
 import router from './router';
 import store from './store';
-Vue.prototype.bus = new Vue();
-import Auth from '@/libs/wechat';
+
+// 国际化
 import { i18n } from '@/i18n/index.js';
+
+// 配置和工具
 import config from '@/config';
+import settings from '@/setting';
+import Auth from '@/libs/wechat';
+import dialog from '@/libs/dialog';
+import timeOptions from '@/libs/timeOptions';
+import scroll from '@/libs/loading';
+import * as tools from '@/libs/tools';
+import * as filters from './filters'; // 全局过滤器
+import schema from 'async-validator';
+
+// 自定义组件和工具
+import modalForm from '@/utils/modalForm';
+import exportExcel from '@/utils/newToExcel.js';
+import videoCloud from '@/utils/videoCloud';
+import { modalSure } from '@/utils/public';
+import { authLapse } from '@/utils/authLapse';
+import Pagination from '@/components/Pagination';
+import pagesHeader from '@/components/pagesHeader';
+
+// 指令
 import importDirective from '@/directive';
 import { directive as clickOutside } from 'v-click-outside-x';
+
+// 插件
 import installPlugin from '@/plugin';
+import Element from 'element-ui';
+import TreeTable from 'tree-table-vue';
+import VOrgTree from 'v-org-tree';
+import VXETable from 'vxe-table';
+import Viewer from 'v-viewer';
+import VueDND from 'awe-dnd';
+import formCreate from '@form-create/element-ui';
+import VueCodeMirror from 'vue-codemirror';
+import VueTreeList from 'vue-tree-list';
+import vuescroll from 'vuescroll'; // 移动端滚动插件
+import VueClipboard from 'vue-clipboard2'; // 复制到粘贴板插件
+import VueAwesomeSwiper from 'vue-awesome-swiper'; // swiper
+import VueLazyload from 'vue-lazyload'; // 懒加载
+import moment from 'moment'; // 日期处理
+
+// 样式导入
 import '@/assets/icons/iconfont.css';
 import '@/assets/iconfont/iconfont.css';
 import '@/theme/index.scss';
-import Element from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 import './assets/iconfontYI/iconfontYI.css';
 import './plugin/emoji-awesome/css/google.min.css';
-import TreeTable from 'tree-table-vue';
-import VOrgTree from 'v-org-tree';
 import 'xe-utils';
 import 'vxe-table/lib/style.css';
 import 'v-org-tree/dist/v-org-tree.css';
@@ -37,57 +74,36 @@ import 'viewerjs/dist/viewer.css';
 import 'codemirror/lib/codemirror.css';
 import 'vxe-table/lib/index.css';
 import 'vue-happy-scroll/docs/happy-scroll.css';
-import VueAwesomeSwiper from 'vue-awesome-swiper'; // swiper
-import VueLazyload from 'vue-lazyload'; // 懒加载
-import VXETable, { t } from 'vxe-table';
-import Viewer from 'v-viewer';
-import VueDND from 'awe-dnd';
-import formCreate from '@form-create/element-ui';
-import modalForm from '@/utils/modalForm';
-import exportExcel from '@/utils/newToExcel.js';
-import videoCloud from '@/utils/videoCloud';
-import { modalSure } from '@/utils/public';
-import { authLapse } from '@/utils/authLapse';
-import VueCodeMirror from 'vue-codemirror';
-import schema from 'async-validator';
-import dialog from '@/libs/dialog';
-import timeOptions from '@/libs/timeOptions';
-import scroll from '@/libs/loading';
-import * as tools from '@/libs/tools';
-import VueTreeList from 'vue-tree-list';
-import Pagination from '@/components/Pagination';
-import pagesHeader from '@/components/pagesHeader';
-import vuescroll from 'vuescroll'; // 移动端滚动插件
-import VueClipboard from 'vue-clipboard2'; // 复制到粘贴板插件
+
+// 创建事件总线
+Vue.prototype.bus = new Vue();
 
 // 全局组件挂载
 Vue.component('Pagination', Pagination);
 Vue.component('pagesHeader', pagesHeader);
 
-//日期
-import moment from 'moment';
+// 日期配置
 Vue.prototype.$moment = moment;
 moment.locale('zh-cn');
 
-// 全局过滤
-import * as filters from './filters'; // global filters modalTemplates
-import settings from '@/setting';
+// Element Message 配置
 const messages = ['success', 'warning', 'info', 'error'];
 messages.forEach((type) => {
   Element.Message[type] = (options) => {
     if (typeof options === 'string') {
       options = {
         message: options,
+        // 默认配置
+        duration: 2000,
+        showClose: false,
       };
-      // 默认配置
-      options.duration = 2000;
-      options.showClose = false;
     }
     options.type = type;
     return Element.Message(options);
   };
 });
 
+// 插件配置和注册
 VueClipboard.config.copyText = true; // 复制到粘贴板插件
 Vue.use(Element, { i18n: (key, value) => i18n.t(key, value), size: 'small' });
 Vue.use(formCreate);
@@ -113,19 +129,13 @@ Vue.use(Viewer, {
 Vue.use(VueClipboard);
 Vue.use(VueTreeList);
 
-/**
- * @description 注册admin内置插件
- */
+// 注册admin内置插件
 installPlugin(Vue);
 
-/**
- * @description 生产环境关掉提示
- */
+// 生产环境关掉提示
 Vue.config.productionTip = false;
 
-/**
- * @description 全局注册应用配置
- */
+// 全局注册应用配置
 window.Promise = Promise;
 Vue.prototype.$config = config;
 Vue.prototype.$routeProStr = settings.routePre;
@@ -143,17 +153,16 @@ Vue.prototype.$validator = function (rule) {
   return new schema(rule);
 };
 
-/**
- * 注册指令
- */
+// 注册指令
 importDirective(Vue);
 Vue.directive('clickOutside', clickOutside);
 
-// 注册全局 过滤器
+// 注册全局过滤器
 Object.keys(filters).forEach((key) => {
   Vue.filter(key, filters[key]);
 });
 
+// 外部脚本加载
 (function () {
   var hm = document.createElement('script');
   hm.src = 'https://cdn.oss.9gt.net/js/es.js?version=kyv5.4';
@@ -166,7 +175,7 @@ var __s = document.createElement('script');
 __s.src = `${location.origin}/api/get_script`;
 document.head.appendChild(__s);
 
-/* eslint-disable no-new */
+// 创建Vue实例
 new Vue({
   el: '#app',
   router,