jh-front-end-example-2/src/main.js

64 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-01-10 21:25:36 +08:00
/*
* @Author: Billy
* @Date: 2020-09-10 09:12:00
* @LastEditors: Billy
* @LastEditTime: 2022-01-01 05:26:15
* @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')