129 lines
3.1 KiB
JavaScript
129 lines
3.1 KiB
JavaScript
|
|
import Vue from 'vue'
|
|||
|
|
import 'element-ui/lib/theme-chalk/index.css';
|
|||
|
|
import App from './App.vue'
|
|||
|
|
import router from './router'
|
|||
|
|
import store from './store'
|
|||
|
|
import "./assets/icon/iconfont.css"
|
|||
|
|
import ElementUI from 'element-ui';
|
|||
|
|
import axios from "axios";
|
|||
|
|
// 引入VueI18n
|
|||
|
|
import i18n from './lang/index'
|
|||
|
|
import API from "./api/api"
|
|||
|
|
import VueQuillEditor from 'vue-quill-editor'
|
|||
|
|
import 'quill/dist/quill.core.css'
|
|||
|
|
|
|||
|
|
import 'quill/dist/quill.snow.css'
|
|||
|
|
|
|||
|
|
import 'quill/dist/quill.bubble.css'
|
|||
|
|
import './assets/style.css' //全局单词首字母大写
|
|||
|
|
import Dropdown from './components/dropdownBox.vue';
|
|||
|
|
import MetaInfo from 'vue-meta-info'
|
|||
|
|
|
|||
|
|
Vue.use(MetaInfo)
|
|||
|
|
|
|||
|
|
Vue.component('Dropdown', Dropdown);
|
|||
|
|
|
|||
|
|
Vue.use(VueQuillEditor) // 注册富文本编辑器
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Vue.config.productionTip =false
|
|||
|
|
|
|||
|
|
//el-tabel 使用千分位格式
|
|||
|
|
import {stateFormat,handleScopeFormat,stateFormat2} from './util/thousands'
|
|||
|
|
import {$addStorageEvent} from '../src/util/processingData'
|
|||
|
|
Vue.prototype.stateFormat = stateFormat
|
|||
|
|
Vue.prototype.stateFormat2 = stateFormat2
|
|||
|
|
Vue.prototype.handleScopeFormat = handleScopeFormat
|
|||
|
|
|
|||
|
|
|
|||
|
|
// element-ui 为了兼容vue-i18n@6.x
|
|||
|
|
Vue.use(ElementUI, {
|
|||
|
|
i18n: (key, value) => i18n.t(key, value)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Vue.prototype.$axios = axios
|
|||
|
|
Vue.prototype.$API = API
|
|||
|
|
Vue.use(ElementUI);
|
|||
|
|
|
|||
|
|
Vue.config.productionTip = false
|
|||
|
|
|
|||
|
|
// //监听localstorage
|
|||
|
|
Vue.prototype.$addStorageEvent = $addStorageEvent
|
|||
|
|
|
|||
|
|
|
|||
|
|
console.log = ()=>{} //全局关闭打印
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
window.a = Vue
|
|||
|
|
window.vm = new Vue({
|
|||
|
|
router,
|
|||
|
|
store,
|
|||
|
|
i18n,
|
|||
|
|
render: h => h(App),
|
|||
|
|
created() {
|
|||
|
|
this.$watch(
|
|||
|
|
() => this.$i18n.locale,
|
|||
|
|
(newLocale) => {
|
|||
|
|
this.updateMetaAndTitle();
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
this.updateMetaAndTitle();
|
|||
|
|
this.updateCanonicalUrl(); // 添加这行
|
|||
|
|
},
|
|||
|
|
mounted () {
|
|||
|
|
document.dispatchEvent(new Event('render-event'))
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
updateMetaAndTitle() {
|
|||
|
|
document.title = this.$i18n.t('seo.appTitle');
|
|||
|
|
const descriptionMeta = document.querySelector('meta[name="description"]');
|
|||
|
|
const keywordsMeta = document.querySelector('meta[name="keywords"]');
|
|||
|
|
|
|||
|
|
if (descriptionMeta) {
|
|||
|
|
descriptionMeta.content = this.$i18n.t('seo.metaDescription');
|
|||
|
|
}
|
|||
|
|
if (keywordsMeta) {
|
|||
|
|
keywordsMeta.content = this.$i18n.t('seo.metaKeywords');
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
updateCanonicalUrl() {//更新index。html的canonical 确保每个页面都有正确的规范链接
|
|||
|
|
const canonicalLink = document.querySelector('link[rel="canonical"]');
|
|||
|
|
if (canonicalLink) {
|
|||
|
|
// 根据当前路由更新 canonical URL
|
|||
|
|
const path = this.$route.path;
|
|||
|
|
const baseUrl = 'https://coinbus.cc';
|
|||
|
|
|
|||
|
|
// 如果是首页,使用基础URL
|
|||
|
|
if (path === '/') {
|
|||
|
|
canonicalLink.href = baseUrl;
|
|||
|
|
} else {
|
|||
|
|
// 其他页面添加路径
|
|||
|
|
canonicalLink.href = `${baseUrl}${path}`;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
// 监听路由变化
|
|||
|
|
'$route'() {
|
|||
|
|
this.updateCanonicalUrl();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}).$mount('#app')
|
|||
|
|
|
|||
|
|
// 初次加载和DOM加载完成时更新
|
|||
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|||
|
|
window.vm.updateMetaAndTitle();
|
|||
|
|
});
|