# Nuxt基础知识以及SSR+CSR配置 **Repository Path**: fxym888/nuxt-test ## Basic Information - **Project Name**: Nuxt基础知识以及SSR+CSR配置 - **Description**: Nuxt基础知识以及SSR+CSR配置 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-20 - **Last Updated**: 2023-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 01. Nuxt3简介和环境搭建 ## Nuxt3的简介
Nuxt3是基于Vue3发布的SSR框架,也是Vue全家桶系列的一员。如果你了解Nuxt2,应该也了解Nuxt3的使命和用途。但是如果你不了解,你需要先知道两个概念。
SPA应用:也就是单页应用,这些多是在客户端的应用,不能进行SEO优化(搜索引擎优化)。
SSR应用:在服务端进行渲染,渲染完成后返回给客户端,每个页面有独立的URL,对SEO友好。
所以如果你开发的应用是企业网站、商品展示 、博客这类型的展示型网站,就需要使用搜索引擎喜欢的SSR应用。当我们明白这两个概念后,再来看Nuxt3的使命。因为Vue开发的应用默认是单页应用(SPA应用),但如果你想针对于搜索优化,就需要使用Vue的SSR模式开发,而Nuxt3就是Vue的SSR开发的框架。 ## Nuxt3 的安装 打开内置终端并输入下面命令创建一个nuxt项目: ```js npx nuxi init nuxt3-test-app ```
这里大概率会失败!
这里大概率会失败!
这里大概率会失败!
这里大概率会失败!
需要改ipv4网络协议配置DNS:114.114.114.114
需要改ipv4网络协议配置DNS:114.114.114.114
需要改ipv4网络协议配置DNS:114.114.114.114
需要改ipv4网络协议配置DNS:114.114.114.114
node版本要大于16!!!
node版本要大于16!!!
node版本要大于16!!!
node版本要大于16!!! 运行 ```js npm run dev // 成功示例 Nuxi 3.3.1 Nuxt 3.3.1 with Nitro 2.3.1 > Local: http://localhost:3000/ > Network: http://192.168.163.1:3000/ > Network: http://192.168.192.1:3000/ > Network: http://192.168.31.195:3000/ i Vite client warmed up in 1820ms √ Nitro built in 611 ms √ Vite server hmr 15 files in 787.215ms ``` 打开网址如图: ![Image text](./readmeImg/1.png) ## Nuxt3的优势介绍 + 更轻量:以现代浏览器为基础的情况下,服务器部署和客户端产物最多减小75倍。 + 更快:用动态服务端代码来优化冷启动。 + Hybird:增量动态生成和其他高级模式现在都成为可能。 + Suspense: 导航前后可在任何组件中获取数据。 + Composition API : 使用Composition API 和 Nuxt3的composables 实现真正的可复用性。 + Nuxt CLI : 权限的零依赖体验,助你轻松搭建项目和集成模块。 + Nuxt Devtools :专属调试工具,更多的信息和快速修复,在浏览器中高效工作。 + Nuxt Kit :全新的基于 TypeScript 和跨版本兼容的模块开发。 + Webpack5 : 更快的构建速度和更小的构建包,并且零配置。 + Vite:用Vite作为你的打包器,体验轻量级的快速HMR。 + Vue3 : 完全支持Vue3语法,这一点特别关键。 + TypeScript:由原生TypeScript和ESM构成,没有额外配置步骤。 # 02. Nuxt3的基础目录结构 默认目录 ```js - .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的配置文件 ``` 新建常用自定义目录 ```js - pages // 开发的页面目录 - components // 组件目录 - assets // 静态资源目录 - layouts // 项目布局目录 ``` ## Hellow World 新建component/hellowWorld.vue,这里用vue3语法写 ```html ``` App.vue,文件中直接写入这个 HelloWorld组件. ```html ``` ![Image text](./readmeImg/2.png) # 03. Nuxt3页面和约定路由的使用 我们按照框架约定新建一个pages 的文件夹,然后新建一个文件Demo1.vue 。注意,上面这两个步骤,就是约定开发,你必须这么作,否则框架就不认为你是一个页面 pages/demo1.vue ```html ``` ## 约定路由 当一个页面建立好以后,如何能访问到这个页面 ? 也是一个不能忽视的问题。既然是约定开发,肯定是有一个约定的。 首先第一步,我们需要在项目根目录下的app.vue文件中,使用 标签,这就相当于路由的出口了。 App.vue ```html ``` 比如我们现在这个页面,想要访问到,其实只要在地址栏输入下面的地址就可以了 ```url http://localhost:3000/demo1 ``` ![Image text](./readmeImg/3.png) 但是如果你使用原来的http://localhost:3000就又访问,会显示404,这时候你可以新建一个 index.vue 页面。这时候在访问http://localhost:3000就可以访问到页面了。 ![Image text](./readmeImg/4.png) ```html ``` ![Image text](./readmeImg/5.png) ## NuxtLink标签的使用 index.vue ```html ``` ![Image text](./readmeImg/6.png) # 04. Nuxt3动态路由的使用 单参数的传递只要在页面的文件名中用[ ]扩起来就可以了。比如新建一个页面,叫做 demo2-[id].vue ```js -| pages/ ---| index.vue ---| demo2-[id].vue ``` demo2-[id].vue ```html ``` 我们去首页制作一个链接。 ```html ``` ![Image text](./readmeImg/7.png) ![Image text](./readmeImg/8.png) ## 在script里获取参数 通过useRoute( ) 获得了 route 然后通过ref让template可用,就是vue3语法 ```html ``` ## 多参数的获取 更改目录结构 ```js -| pages/ ---| index.vue ---| goods-[name]/ -----| demo3-[id].vue ``` 去首页制作一个链接。 ```html ``` ![Image text](./readmeImg/9.png) # 05.Nuxt3 嵌套路由的使用 嵌套路由就是路由是两级,但是程序员的页面是一个。也就是说有父级页面,也有子集页面。类似我们的页面嵌套。 如何建立一个嵌套路由 嵌套路由的建立非常容易,用一句话解释为:目录和文件名同名,就制作了一个嵌套路由。 制作一个嵌套路由页面一般需要三步: + 建立嵌套路由的文件夹(约定大于配置) + 创建和文件夹相同名称的文件(父页面) + 在新建文件夹下任意创建子页面 ```html |--pages |----parent/ |-------child.vue |----parent.vue ``` 先在\pages目录下,新建一个文件夹 parent ,然后在pages目录下再建立一个parent.vue的文件。文件建立好之后,编写代码。 ```html ``` 这里的就是嵌套路由的出口,所以如果是嵌套路由,就必须要加上这个标签。这是Nuxt的一个内置组件。 有了父页面之后,在新建的parent文件夹下,再建立一个 child.vue子页面。然后编写代码。 ```html ``` 直接到index.uve增加路由链接。 ```html /parent/child
``` # 06. Nuxt3布局模板 布局模板的作用就是你先定义好一个布局页面,然后提取一些通用的UI或代码到可重用的模板中,提高代码复用性,从而降低代码的复杂度,让代码重用性提高 ## 创建布局模板和使用模板 比如现在新建一个文件夹\layouts然后再里边写编写一个 default.vue文件,代码如下。 ```html ``` app.vue ```html ``` ## 增加多个插槽 修改default.vue布局模板,增加第二个插槽,一个叫做one,一个叫做two。 ```html ``` 这样编写,一个模板中就有了两个插槽,你可以在页面中通过