/*
 * @Author: Billy
 * @Date: 2020-09-10 09:12:00
 * @LastEditors: Billy
 * @LastEditTime: 2022-03-07 15:03:20
 * @Description: 请输入
 */
import Vue from 'vue';
import App from './App.vue';
import router from './router/_index.js';
import store from './store';
import ElementUI from 'element-ui';
import './scss/element-variables.scss';
import "./svgicon/index.js";
import Event from './util/Event';
// import AuthHelper from "./auth/AuthHelper.js";
import SafePush from './util/SafePush';

Vue.config.productionTip = false;
Vue.use(ElementUI, {
  size: 'medium'
});

Vue.prototype.$safePush = SafePush;

// 注册一个全局自定义指令 `v-auth`，用于验证权限
// Vue.directive('auth', {
//   bind: function (el, param) { },
//   // 当被绑定的元素插入到 DOM 中时……
//   inserted: function (el, param) {
//     let pass = AuthHelper.checkAuth(param.value);
//     if (!pass) {
//       el.remove()
//     }
//   },
//   update: function (el, param) { },
//   componentUpdated: function (el, param) { },
//   unbind: function (el, param) { }
// });

// 全局事件总线
// 参考：https://zhuanlan.zhihu.com/p/72777951
// 不到必要时，不建议使用，否则容易增加全局代码复杂度
// let EventBus = new Vue();
// Object.defineProperties(Vue.prototype, {
//   $bus: {
//     get: function () {
//       return EventBus;
//     }
//   }
// });

new Vue({
  router,
  store,
  render: h => h(App),
  created: function () {
    // 如果用原生的resize事件，将会损耗大量资源，因为resize事件触发的次数非常多
    // 因此把连续触发的resize事件转化为optimizedResize自定义事件，节约资源，并且组件也有足够时间重新渲染
    // 在此监听resize事件即可，不要在别处重复监听resize事件
    // 参考：https://stackoverflow.com/questions/28056716/check-if-an-element-has-event-listener-on-it-no-jquery
    Event.throttle('resize', 'optimizedResize', 500)
  }
}).$mount('#app')