【Nuxt3】路由参数(动态路由、嵌套路由)
多层嵌套 params 参数(通常用于捕获404)动态路由参数(与页面路由差不多,但有些区别)
·
页面路由参数
-
query 参数
-
目录
|- pages | |- foo.vue
-
路由地址
https://loaclhost:8080/foo?id=1
-
参数获取
// foo.vue <template> <div> id: {{ route.query.id }} </div> </template> <script setup lang="ts"> const route = useRoute() console.log('id:', route.query.id) </script>
-
-
params 参数
-
目录
|- pages | |- foo-[name] | | |- [id].vue
-
路由地址
https://loaclhost:8080/foo-admin/1
-
参数获取
// [id].vue <template> <div> name: {{ route.params.name }} id: {{ route.params.id }} </div> </template> <script setup lang="ts"> const route = useRoute() console.log('name:', route.params.name) console.log('id:', route.params.id) </script>
-
-
多层嵌套 params 参数(通常用于捕获404)
-
目录
|- pages | |- foo.vue | | |- [...all].vue
-
路由地址
https://loaclhost:8080/foo/a https://loaclhost:8080/foo/a/b/c
-
参数获取
// [...all].vue <template> <div> 单层:{{ route.params.all[0] }} 多层: {{ route.params.all[2] }} </div> </template> <script setup lang="ts"> const route = useRoute() console.log('all:', route.params.all) // array </script>
-
服务端路由参数(server/api)
-
正常参数
-
目录
|- server | |- api | | |- foo.get.ts | | |- bar.patch.ts // 后缀对应 method
-
请求地址
// [method] - get useFetch('/api/foo?id=1') useFetch('/api/foo', { params: { id: '1' } }) // [method] - post / put / delete / patch ... useFetch('/api/bar', { body: { id: '1' }, method: 'patch' })
-
参数获取
// xxx.yyy.ts import { H3Event } from 'h3' export default defineEventHandler(async (event: H3Event) => { const method = getMethod(event) const cookie = getCookie(event) const { authorization: token } = getHeaders(event) const { href, origin, search } = getRequestURL(event) // params 参数 const { id } = getQuery(event) // body 参数 - promise const { id } = await readBody(event) return { data: { id }, meta: { code: 200, method, cookie, token, href, origin, search } } })
-
-
动态路由参数(与页面路由差不多,但有些区别)
-
目录
// 普通路由 |- server | |- api | | |- foo | | | |- [id].get.ts // 嵌套路由 |- server | |- api | | |- bar | | | |- [...all].get.ts // 任意嵌套(与上面区别是,上面是指定参数名,任意嵌套则是默认参数名 "_") |- server | |- api | | |- bar | | | |- [...].get.ts
-
请求地址
// 普通路由参数 useFetch('/api/foo/1') // 嵌套路由 or 任意嵌套 useFetch('/api/bar/a/b/c')
-
参数获取
// xxx.yyy.ts import { H3Event } from 'h3' export default defineEventHandler(async (event: H3Event) => { // 嵌套路由不可同时共存,只生效其一 const { id, all, _ } = getRouterParams(event) // 注意,与页面路由的区别,服务端路由,得到的参数,是 '/' 拼接的字符串,也就是路径字符串。而页面路由则是数组 return { data: { id, // 普通路由 all, // 嵌套路由 _ // 任意嵌套 }, meta: { code: 200, } } })
-
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)