Skip to content

Commit d8b8771

Browse files
committed
refactor: Use SFC <route> block for routes (#102)
1 parent d625793 commit d8b8771

File tree

10 files changed

+98
-82
lines changed

10 files changed

+98
-82
lines changed

src/pages/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# `definePage`
2-
3-
We used macro [`definePage()`](https://github.com/posva/unplugin-vue-router?tab=readme-ov-file#extending-existing-routes) to define the route name and meta information for each page, making it easy to control the transition animations for each route.
4-
5-
我们使用 [`definePage()`](https://github.com/posva/unplugin-vue-router?tab=readme-ov-file#extending-existing-routes) 定义每个页面的路由名称和元信息,可以轻松控制每个路由的过渡动画。
1+
# SFC `<route>` custom block
2+
3+
We used SFC <route> [`<route>`](https://uvr.esm.is/guide/extending-routes.html#sfc-route-custom-block) custom block to define the route name and meta information for each page, making it easy to control the transition animations for each route.
4+
5+
我们使用 SFC [`<route>`](https://uvr.esm.is/guide/extending-routes.html#sfc-route-custom-block) 自定义块定义每个页面的路由名称和元信息,可以轻松控制每个路由的过渡动画。

src/pages/[...all].vue

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
<script setup lang="ts">
2-
definePage({
3-
name: '404',
4-
meta: {
5-
level: 2,
6-
},
7-
})
8-
92
const router = useRouter()
103
114
function onBack() {
@@ -30,3 +23,12 @@ function onBack() {
3023
</div>
3124
</Container>
3225
</template>
26+
27+
<route lang="json">
28+
{
29+
"name": "404",
30+
"meta": {
31+
"level": 2
32+
}
33+
}
34+
</route>

src/pages/charts/index.vue

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
<script setup lang="ts">
2-
definePage({
3-
name: 'charts',
4-
meta: {
5-
level: 2,
6-
title: '📊 Echarts 演示',
7-
i18n: 'home.echartsDemo',
8-
},
9-
})
10-
112
const { t } = useI18n()
123
134
const barOption = {
@@ -75,3 +66,14 @@ const refScoreOption = ref(scoreOption)
7566
<Chart :option="refScoreOption" :style="{ height: '330px' }" />
7667
</Container>
7768
</template>
69+
70+
<route lang="json">
71+
{
72+
"name": "charts",
73+
"meta": {
74+
"level": 2,
75+
"title": "📊 Echarts 演示",
76+
"i18n": "home.echartsDemo"
77+
}
78+
}
79+
</route>

src/pages/counter/index.vue

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22
import { storeToRefs } from 'pinia'
33
import useCounterStore from '@/stores/modules/counter'
44
5-
definePage({
6-
name: 'counter',
7-
meta: {
8-
level: 2,
9-
title: '🍍 持久化 Pinia 状态',
10-
i18n: 'home.persistPiniaState',
11-
},
12-
})
13-
145
const counterStore = useCounterStore()
156
const { counter } = storeToRefs(counterStore)
167
@@ -39,3 +30,14 @@ function add() {
3930
</button>
4031
</container>
4132
</template>
33+
34+
<route lang="json">
35+
{
36+
"name": "counter",
37+
"meta": {
38+
"level": 2,
39+
"title": "🍍 持久化 Pinia 状态",
40+
"i18n": "home.persistPiniaState"
41+
}
42+
}
43+
</route>

src/pages/index.vue

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@ import type { PickerColumn } from 'vant'
33
import useAppStore from '@/stores/modules/app'
44
import { languageColumns, locale } from '@/utils/i18n'
55
6-
definePage({
7-
name: 'home',
8-
meta: {
9-
level: 1,
10-
},
11-
})
12-
136
const appStore = useAppStore()
147
const checked = ref<boolean>(isDark.value)
158
@@ -78,3 +71,12 @@ const menuItems = computed(() => ([
7871
</VanCellGroup>
7972
</Container>
8073
</template>
74+
75+
<route lang="json">
76+
{
77+
"name": "home",
78+
"meta": {
79+
"level": 1
80+
}
81+
}
82+
</route>

src/pages/keepalive/index.vue

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,6 @@ defineOptions({
33
name: 'KeepAlive',
44
})
55
6-
definePage({
7-
name: 'KeepAlive',
8-
meta: {
9-
level: 2,
10-
title: '🧡 KeepAlive',
11-
i18n: 'home.keepAlive',
12-
keepAlive: true,
13-
},
14-
})
15-
166
const value = ref(1)
177
</script>
188

@@ -22,3 +12,15 @@ const value = ref(1)
2212
<van-stepper v-model="value" />
2313
</Container>
2414
</template>
15+
16+
<route lang="json">
17+
{
18+
"name": "KeepAlive",
19+
"meta": {
20+
"level": 2,
21+
"title": "🧡 KeepAlive",
22+
"i18n": "home.keepAlive",
23+
"keepAlive": true
24+
}
25+
}
26+
</route>

src/pages/login/index.vue

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ import { useUserStore } from '@/stores'
44
55
import defaultAvatar from '@/assets/images/default-avatar.svg'
66
7-
definePage({
8-
name: 'login',
9-
meta: {
10-
level: 2,
11-
i18n: 'home.login',
12-
},
13-
})
14-
157
const { t } = useI18n()
168
const router = useRouter()
179
const userStore = useUserStore()
@@ -68,3 +60,13 @@ async function asyncLogin(values: any) {
6860
</div>
6961
</Container>
7062
</template>
63+
64+
<route lang="json">
65+
{
66+
"name": "login",
67+
"meta": {
68+
"level": 2,
69+
"i18n": "home.login"
70+
}
71+
}
72+
</route>

src/pages/mock/index.vue

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11
<script setup lang="ts">
22
import { queryProse } from '@/api'
33
4-
definePage({
5-
name: 'mock',
6-
meta: {
7-
level: 2,
8-
title: '💿 Mock 指南',
9-
i18n: 'home.mockGuide',
10-
},
11-
})
12-
134
const messages = ref<string>('')
145
156
function pull() {
@@ -44,6 +35,17 @@ function pull() {
4435
</Container>
4536
</template>
4637

38+
<route lang="json">
39+
{
40+
"name": "mock",
41+
"meta": {
42+
"level": 2,
43+
"title": "💿 Mock 指南",
44+
"i18n": "home.mockGuide"
45+
}
46+
}
47+
</route>
48+
4749
<style lang="less" scoped>
4850
.data-label {
4951
color: #969799;

src/pages/profile/index.vue

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@ import router from '@/router'
33
import { useUserStore } from '@/stores'
44
import defaultAvatar from '@/assets/images/default-avatar.svg'
55
6-
definePage({
7-
name: 'profile',
8-
meta: {
9-
level: 1,
10-
},
11-
})
12-
136
const { t } = useI18n()
147
const userStore = useUserStore()
158
const userInfo = computed(() => userStore.userInfo)
@@ -49,3 +42,12 @@ function logout() {
4942
</div>
5043
</Container>
5144
</template>
45+
46+
<route lang="json">
47+
{
48+
"name": "profile",
49+
"meta": {
50+
"level": 1
51+
}
52+
}
53+
</route>

src/pages/unocss/index.vue

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
<script setup lang="ts">
2-
definePage({
3-
name: 'unocss',
4-
meta: {
5-
level: 2,
6-
title: '🎨 Unocss 示例',
7-
i18n: 'home.unocssExample',
8-
},
9-
})
10-
</script>
11-
121
<template>
132
<Container>
143
<h1 class="text-6xl color-pink font-semibold">
@@ -24,3 +13,14 @@ definePage({
2413
</button>
2514
</Container>
2615
</template>
16+
17+
<route lang="json">
18+
{
19+
"name": "unocss",
20+
"meta": {
21+
"level": 2,
22+
"title": "🎨 Unocss 示例",
23+
"i18n": "home.unocssExample"
24+
}
25+
}
26+
</route>

0 commit comments

Comments
 (0)