58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
import { createApp } from "vue";
|
|
|
|
import App from "./App.vue";
|
|
|
|
import { setupStore } from "./store";
|
|
//使用了Top await
|
|
import { setupRouter } from "./router";
|
|
import { setupI18n } from "./locales";
|
|
|
|
import {
|
|
setupAntd,
|
|
setupAssets,
|
|
setupCustomComponents,
|
|
setupVuePhoto,
|
|
} from "./plugins";
|
|
|
|
const app = createApp(App);
|
|
|
|
function setupPlugins() {
|
|
// 注册全局常用的ant-design-vue组件
|
|
setupAntd(app);
|
|
// 注册全局常用的VuePhoto组件
|
|
setupVuePhoto(app);
|
|
// 引入静态资源
|
|
setupAssets();
|
|
// 注册全局自定义组件,如:<svg-icon />
|
|
setupCustomComponents(app);
|
|
}
|
|
|
|
async function setupApp() {
|
|
// 挂载pinia状态管理
|
|
setupStore(app);
|
|
// 挂载路由
|
|
await setupRouter(app);
|
|
// 初始化 i18n
|
|
await setupI18n(app);
|
|
|
|
setupShareImage();
|
|
|
|
app.mount("#app");
|
|
}
|
|
|
|
/**
|
|
* 分享卡片(微信收藏/转发等)的缩略图要求绝对地址,相对路径会被忽略,
|
|
* 这里按当前域名把 index.html 里的 og:image 补全。
|
|
*/
|
|
function setupShareImage() {
|
|
const meta = document.querySelector('meta[property="og:image"]');
|
|
const content = meta?.getAttribute("content");
|
|
if (meta && content && !/^https?:\/\//i.test(content)) {
|
|
meta.setAttribute("content", new URL(content, location.origin).href);
|
|
}
|
|
}
|
|
|
|
setupPlugins();
|
|
|
|
setupApp();
|