blivechat/frontend/src/main.js

120 lines
2.6 KiB
JavaScript
Raw Normal View History

2019-05-21 19:15:12 +08:00
import Vue from 'vue'
import VueRouter from 'vue-router'
2019-07-08 11:42:35 +08:00
import VueI18n from 'vue-i18n'
2020-02-22 17:21:47 +08:00
import {
2021-03-07 14:40:58 +08:00
Aside, Autocomplete, Badge, Button, Card, Col, ColorPicker, Container, Divider, Form, FormItem, Image,
Input, Main, Menu, MenuItem, Message, Option, OptionGroup, Radio, RadioGroup, Row, Select, Scrollbar,
Slider, Submenu, Switch, TabPane, Tabs, Tooltip
2020-02-22 17:21:47 +08:00
} from 'element-ui'
2019-06-12 13:55:49 +08:00
import axios from 'axios'
2019-05-21 19:15:12 +08:00
import App from './App.vue'
2019-06-11 12:51:25 +08:00
import Layout from './layout'
2019-06-09 12:37:59 +08:00
import Home from './views/Home.vue'
2019-06-16 23:04:30 +08:00
import StyleGenerator from './views/StyleGenerator'
2019-12-16 23:40:01 +08:00
import Help from './views/Help'
2019-06-17 12:29:25 +08:00
import Room from './views/Room.vue'
2019-06-09 12:37:59 +08:00
import NotFound from './views/NotFound.vue'
2019-05-21 19:15:12 +08:00
2019-07-08 11:42:35 +08:00
import zh from './lang/zh'
import ja from './lang/ja'
import en from './lang/en'
2019-06-12 13:55:49 +08:00
if (process.env.NODE_ENV === 'development') {
2019-07-10 15:30:35 +08:00
// 开发时使用localhost:12450
axios.defaults.baseURL = 'http://localhost:12450'
2019-06-12 13:55:49 +08:00
}
2021-03-28 18:30:31 +08:00
axios.defaults.timeout = 10 * 1000
2019-06-12 13:55:49 +08:00
2019-05-21 19:15:12 +08:00
Vue.use(VueRouter)
2019-07-08 11:42:35 +08:00
Vue.use(VueI18n)
2020-02-22 17:21:47 +08:00
// 初始化element
Vue.use(Aside)
Vue.use(Autocomplete)
Vue.use(Badge)
Vue.use(Button)
2021-03-07 14:40:58 +08:00
Vue.use(Card)
2020-02-22 17:21:47 +08:00
Vue.use(Col)
Vue.use(ColorPicker)
Vue.use(Container)
Vue.use(Divider)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Image)
Vue.use(Input)
Vue.use(Main)
Vue.use(Menu)
Vue.use(MenuItem)
2021-03-07 14:40:58 +08:00
Vue.use(Option)
Vue.use(OptionGroup)
2020-11-28 21:53:49 +08:00
Vue.use(Radio)
Vue.use(RadioGroup)
2020-02-22 17:21:47 +08:00
Vue.use(Row)
2021-03-07 14:40:58 +08:00
Vue.use(Select)
2020-02-22 17:21:47 +08:00
Vue.use(Scrollbar)
Vue.use(Slider)
Vue.use(Submenu)
Vue.use(Switch)
Vue.use(TabPane)
Vue.use(Tabs)
Vue.use(Tooltip)
Vue.prototype.$message = Message
2019-05-21 19:15:12 +08:00
2019-06-09 12:37:59 +08:00
Vue.config.ignoredElements = [
/^yt-/
]
2019-05-21 19:15:12 +08:00
const router = new VueRouter({
mode: 'history',
routes: [
2019-06-11 12:51:25 +08:00
{
path: '/',
component: Layout,
children: [
2022-01-04 21:41:12 +08:00
{ path: '', component: Home },
{ path: 'stylegen', name: 'stylegen', component: StyleGenerator },
{ path: 'help', name: 'help', component: Help }
2019-06-11 12:51:25 +08:00
]
},
2022-01-04 21:41:12 +08:00
{ path: '/room/test', name: 'test_room', component: Room, props: route => ({ strConfig: route.query }) },
2021-04-05 18:48:49 +08:00
{
path: '/room/:roomId',
name: 'room',
component: Room,
props(route) {
let roomId = parseInt(route.params.roomId)
if (isNaN(roomId)) {
roomId = null
}
2022-01-04 21:41:12 +08:00
return { roomId, strConfig: route.query }
2021-04-05 18:48:49 +08:00
}
},
2022-01-04 21:41:12 +08:00
{ path: '*', component: NotFound }
2019-05-21 19:15:12 +08:00
]
})
2019-07-08 11:42:35 +08:00
let locale = window.localStorage.lang
if (!locale) {
let lang = navigator.language
if (lang.startsWith('zh')) {
locale = 'zh'
} else if (lang.startsWith('ja')) {
locale = 'ja'
} else {
locale = 'en'
}
}
const i18n = new VueI18n({
locale,
fallbackLocale: 'en',
messages: {
zh, ja, en
}
})
2019-05-21 19:15:12 +08:00
new Vue({
render: h => h(App),
2019-07-08 11:42:35 +08:00
router,
i18n
2019-05-21 19:15:12 +08:00
}).$mount('#app')