2b69686795
- 新增404页面,优化未找到页面体验,避免被搜索引擎索引 - 增加文件代理接口,隐藏真实文件服务器地址,支持文件请求代理 - 实现/article、/case、/product及/page动态路由兼容列表与详情展示 - 添加动态CMS页面兼容入口处理旧式路径,统一路由与SEO设置 - 新增模板1、模板7、模板2、模板3关于我们页面,实现多模板支持 - 模板增强支持CMS单页内容加载及SEO信息动态设置 - 配置环境变量及Git忽略文件规则辅助开发和构建环境管理
59 lines
1.3 KiB
Vue
59 lines
1.3 KiB
Vue
<template>
|
|
<Component :is="component" v-if="component" />
|
|
<SiteLoading v-else />
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
/**
|
|
* 模板 1 - 通用模板页面选择器
|
|
* 根据路由动态选择对应页面组件
|
|
*/
|
|
const route = useRoute()
|
|
|
|
const component = shallowRef<Component | null>(null)
|
|
|
|
const routeMap: Record<string, () => Promise<{ default: Component }>> = {
|
|
news: () => import('./NewsList.vue'),
|
|
'news-id': () => import('./NewsDetail.vue'),
|
|
products: () => import('./ProductList.vue'),
|
|
'products-id': () => import('./ProductDetail.vue'),
|
|
cases: () => import('./CaseList.vue'),
|
|
'cases-id': () => import('./CaseDetail.vue'),
|
|
contact: () => import('./Contact.vue'),
|
|
renewal: () => import('./Renewal.vue')
|
|
}
|
|
|
|
async function resolveComponent() {
|
|
const name = route.name as string | undefined
|
|
|
|
if (name === 'index') {
|
|
const mod = await import('./Home.vue')
|
|
component.value = mod.default
|
|
return
|
|
}
|
|
|
|
if (name === 'slug') {
|
|
const mod = await import('./Page.vue')
|
|
component.value = mod.default
|
|
return
|
|
}
|
|
|
|
if (name) {
|
|
const loader = routeMap[name]
|
|
if (loader) {
|
|
const mod = await loader()
|
|
component.value = mod.default
|
|
return
|
|
}
|
|
}
|
|
|
|
component.value = null
|
|
}
|
|
|
|
if (import.meta.server) {
|
|
await resolveComponent()
|
|
}
|
|
|
|
onMounted(resolveComponent)
|
|
</script>
|