版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40283784/article/details/87278220
//引入vue
import Vue from 'vue'
//引入api
import 'common/api/global'
//入口组件APP
import App from './App'
//引入自定义的vue路由
import router from './router'
//引入jquery
import $ from 'jquery'
//引入vabel-polyfill包,用以解决ie6以下不兼容es6语法的问题
import 'babel-polyfill';
//import { Vue2Dragula } from 'vue2-dragula'
//引入vue-resource的目的是因为有的同事喜欢用这个http请求的方式,囧。。。
import VueResource from 'vue-resource';
//引入axios,这是大部分同事用axios来发送http请求。我们在http.js中做了请求的拦截处理
import axios from './http/http.js';
//引入iview组件库
import iView from 'iview';
//项目用的是英文版本,对应的也是英文版本的iview
import locale from 'iview/dist/locale/en-US';
//引入vuex状态管理
import Vuex from 'vuex';
//
import TXPlugin from './TXPlugin.js';
//引入store中保存得各种变量
import store from '../src/vuex/store.js';
//引入iview的css样式
import 'iview/dist/styles/iview.css'; // 使用 CSS
//引入jqueryUI,因为项目中使用了它的拖拽功能
import '../static/jqueryui/jquery-ui.js';
//映入jqueryUI的css样式
import '../static/jqueryui/jquery-ui.min.css';
//引入v-click-outside-x,更良好的dom事件处理
import * as vClickOutside from 'v-click-outside-x';
//项目要进行多语言划分,只好用这个来解决了
import VueI18n from 'vue-i18n';
//引入多语言标识,比如en-Us代表英语,zh-CN代表汉语
import iviewLanguages from './common/lang/index'
//时间格式化组件moment
import moment from 'moment'
//引入good-storage的目的是用来做缓存的处理
import storage from 'good-storage';
//项目中要用到文本编辑,综合调研会选择ckeditor
import CKEditor from '@ckeditor/ckeditor5-vue';
//引入amchats4做一些表格的处理
import * as am4core from "@amcharts/amcharts4/core";
import * as am4charts from "@amcharts/amcharts4/charts";
import am4themes_animated from "@amcharts/amcharts4/themes/animated";
// import am4themes_dataviz from "@amcharts/amcharts4/themes/dataviz";
//自定义了一个函数,用来做缓存处理
import {getPreferencesSession} from 'common/utils/common'
am4core.useTheme(am4themes_animated);
// am4core.useTheme(am4themes_dataviz);
//以下的替换写法主要为了解决命名空间的冲突
//重写window的getpreferencesSession接口
window.getPreferencesSession = getPreferencesSession
//用引入的moment替代window层的moment
window.moment=moment;
//用引入的good-storage替换window下的storage
window.storage=storage;
//vue声明使用VUeI8n
Vue.use(VueI18n);
//vue bus可以实现不同组件间、不同页面间的通信
/*全局定义:main.js
window.eventBus = new Vue()
在A页面的事件中触发:
eventBus.$emit('todo', '123')
在B页面的created中开始监听,越早监听越好:
eventBus.$on('todo', (params) => {
console.log(params)
})
*/
window.$bus=new Vue();
//为避免重名调用问题,将locale置为空函数
Vue.locale = () => {};
let messages = {}
//确定项目语言,并保存
languages.forEach((item)=>{
let iviewLanguage = iviewLanguages[item.iviewName] || iviewLanguages.en_US || {}
let ownerLanguage = window[item.localName] || window.app_en || {}
messages[item.localLang] = Object.freeze(Object.assign(iviewLanguage, ownerLanguage))
})
const navLang = navigator.language;
const localLang = languages.find( item => item.localLang === navLang)
const lang = storage.get('language',null) || localLang || firstLanguage.localLang;
storage.set('language',lang)
const i18n = new VueI18n({
locale: lang.localLang, // set locale
messages // set locale messages
});
//声明使用导入的各个插件
Vue.use(VueResource);
Vue.use(iView, {
locale: locale,
i18n(path, options) {
let value = i18n.t(path, options);
if (value !== null && value !== undefined) return value;
return '';
}
});
Vue.use(Vuex);
Vue.use(TXPlugin);
Vue.use(vClickOutside);
Vue.use( CKEditor );
// set eventBus for component in common level
window.eventBus = new Vue();
//Vue.http.headers.common['UserToken'] = '0C052C31-C051-4913-9FA6-C7643FA049FB';
// Vue.use(Vue2Dragula, {
// logging: {
// directive: true,
// plugin: true,
// service: true,
// dragHandler: true
// }
// })
//把axios放入vue的原型中,是vue中使用axios的惯用方法:this.axios
Vue.prototype.axios = axios
//每次请求数据都把通行key值放入session的缓存之中
Vue.http.interceptors.push((request, next) => {
var token = sessionStorage.getItem('user_token');
request.headers.set('Authorization', `Bearer ${token}`)
next(response => {
return response
})
});
Vue.config.productionTip = false;
Vue.http.options.emulateJSON = true;
Vue.http.options.emulateHTTP = true;
//Vue.http.options.credentials = true
//注册一个全局过滤器
Vue.filter('substrName', function(value) {
if (value) {
let arr = value.split(' ');
let list = [];
for (var i = 0; i < arr.length; i++) {
list.push(arr[i].charAt(0));
}
let last = list.join("");
return last;
}
})
//实例化vue的模版,一般只有四个,但是本项目多了一个多语言切换,所以新增了I18N
new Vue({
el: '#app',
router,
i18n,
render: h => h(App),
store
})
export default Vue