Nuxt3 用于制作ssr 网页 支持vue3 所有的语法,并且支持了TypeScript, vite vue3 composition api ts。SPA单页面应用不能进行SEO优化,SSR应用在服务端进行渲染,渲染完成后返回给客户端,每一个页面有独立的URL对SEO友好。
1.Nuxt3安装
代码语言:javascript复制初始化函数
npx nuxi init nuxt3-test
进入项目
cd nuxt3-test
安装依赖包
npm install
运行项目
npm run dev
2.Nuxt3基础目录结构
代码语言:javascript复制 - .nuxt // 自动生成的目录,用于展示结果
- node_modules // 项目依赖包存放目录
- .gitignore // Git的配置目录,比如一些文件不用Git管理就可以在这个文件中配置
- app.vue // 项目入口文件,你可以在这里配置路由的出口
- nuxt.config.ts // nuxt项目的配置文件 ,这个里边可以配置Nuxt项目的方法面面
- package-lock.json // 锁定安装时包的版本,以保证其他人在 npm install时和你保持一致
- package.json // 包的配置文件和项目的启动调式命令配置 - README.md // 项目的说明文件
- tsconfig.json // TypeScript的配置文件
3.Nuxt3约定路由,嵌套路由
根目录下新建pages 然后文件夹里面新建index.vue
在根目录下app.vue 文件中使用<Nuxtpage> 路由的出口
代码语言:javascript复制<template>
<div>
<NuxtPage></NuxtPage>
</div>
</template>
在目录下创建demo1.vue 文件 然后就在index.vue 跳转到demo1.vue 使用NuxtLink 标签
代码语言:javascript复制<template>
<div >
<h1>Index Page</h1>
<NuxtLink to="/demo1">Demo1.vue</NuxtLink>
</div>
</template>
创建一个嵌套路由
建立嵌套路由的文件夹(约定大于配置)
创建和文件夹相同名称的文件(父页面)
在新建文件夹下任意创建子页面
代码语言:javascript复制|--pages
|----parent/
|------child.vue
|----parent.vue
parent.vue 里面引用子页面
代码语言:javascript复制<template>
<div class="">Parent Page</div>
<!-- 子页面的出口-->
<NuxtChild></NuxtChild>
</template>
<script setup>
import {} from "vue";
</script>
<style scoped></style>
4.Nuxt3动态路由的使用
但参数传递只要在页面的文件名中用 [ ] 括起来就好了,例如 demo2-[id].vue
代码语言:javascript复制-| pages/
---| index.vue
---| demo2-[id].vue
参数接收使用$route.params.id 的形式
在开发者中常使用的
代码语言:javascript复制<template>
<div class="">获取的id:{{ id }}</div>
</template>
<script setup>
import { ref } from "vue";
const route = useRoute();
const id = ref(route.params.id);
</script>
<style scoped></style
多参数的传递和获取
如果传递的是两个参数,那么就需要建立一个文件夹在文件夹上使用[ ] 来确定参数
代码语言:javascript复制-| pages/
---| index.vue
---| goods-[name]/
-----| demo2-[id].vue
页面上获取参数
代码语言:javascript复制<template>
<div class="">获取的id:{{ id }}</div>
<div class="">获取的name:{{ name }}</div>
</template>
<script setup>
import { ref } from "vue";
const route = useRoute();
const id = ref(route.params.id);
const name = ref(route.params.name);
</script>
<style scoped></style
页面跳转的时候
<NuxtLink to="/goods-shangpin/demo2-38">Demo2.vue</NuxtLink>