nuxt3:我们开始吧-开发-配置-部署(一)

简介: nuxt3:我们开始吧-开发-配置-部署(一)

一、背景介绍

2022 年 11 月 16 日,全球最大的 Nuxt 会议 Nuxt Nation 2022 在线举行,并正式发布了 Nuxt.js 3.0 的第一个稳定版本。Nuxt 3 是基于 ViteVue3Nitro 的 Nuxt 框架的现代重写,具有一流的 Typescript 支持,是两年多研究、社区反馈、创新和实验的结果。为每个人提供了一个愉快的 Vue 全栈开发体验。

因为nuxt优越的服务端渲染能力,所以对于nuxt3项目关注已久!我们开始吧!

二、官方网址

Nuxt - The Intuitive Vue Framework

Announcing 3.0 · Nuxt

Nuxt - Installation

https://github.com/nuxt/create-nuxt-app/blob/master/README.md

三、新特性介绍

1、更轻量:以现代浏览器为目标的服务器部署和客户端产物最多可缩小 75 倍

2、更快:基于 nitro 提供动态代码分割能力,以优化冷启动性能

3、Hybrid:增量静态生成和其他的高级功能现在都成为可能

4、Suspense:在任意组件和导航前后都可以获取数据

5、Composition API:使用 Composition API 和 Nuxt 3 的 composables 实现真正的代码复用

6、Nuxt CLI:没有任何依赖,帮你轻松搭建项目和集成模块

7、Nuxt Devtools:通过直接在浏览器中查看信息和快速修复实现更快地工作

8、Nuxt Kit:具有 Typescript 和跨版本兼容性的全新模块开发

9、Webpack 5:更快的构建时间和更小的包大小,无需配置

10、Vite:使用 Vite 作为打包工具,体验闪电般快速的 HMR

11、Vue 3:Vue 3 是你下一个 Web 应用程序的坚实基础

12、TypeScript:使用原生 TypeScript 和 ESM 构建,无需额外步骤

Nuxt 3.0 稳定版正式发布,基于 Vue 3 的 Web 框架

四、重要概念

SPA应用:也就是单页应用,这些多是在客户端的应用,不能进行SEO优化(搜索引擎优化)。

SSR应用:在服务端进行渲染,渲染完成后返回给客户端,每个页面有独立的URL,对SEO友好。

约定式路由:不需要配置路由,在根目录pages目录下创建业务页面,即可访问。

约定式配置:如layouts布局、middleware、plugins

五、启动基础项目

https://github.com/nuxt/create-nuxt-app/blob/master/README.md

5.1、创建项目:

创建nuxt3项目:

pnpm dlx nuxi init nuxt-app

npx nuxi init nuxt3-app

5.2、安装依赖

pnpm install --shamefully-hoist

5.3、启动项目

启动成功

六、项目配置、基础使用

6.1、访问pages/index.vue

根目录app.vue,<NuxtWelcome />替换为:<NuxtPage/>

<template>
  <NuxtPage/>
  <!-- <div>
    <NuxtWelcome />
  </div> -->
</template>

pages/index.vue

<template>
    <div>
        <h1>snow</h1>
    </div>
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>

pages/about.vue  

<template>
    <div>
        <h1>about</h1>
    </div>
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>

这样就可以访问页面了:

6.2、动态路由

6.2.1、目录结构

6.2.2、访问:/user

如果没有pages/user/index页面,只有[id].vue,访问的时候式404页面

6.2.3、访问:/user/1,动态路由,获取动态路由参数

{{$route.params.id}}

6.2.4、访问:/user/1?name=snow,动态路由,获取路由普通参数:

{{$route.query.name}}

6.2.5、通过useRoute()获取路由信息

const route = useRoute()

<template>
    <div>
        <h1>user-id:{{$route.params.id}}</h1>
        <h1>user-name:{{$route.query.name}}</h1>
    </div>
</template>
<script setup lang="ts">
    const route = useRoute()
    console.log(route.params, route.query)
</script>
<style scoped>
</style>

6.3、路由跳转

经过测试一下几种方式均成功跳转。页面内容均正常展示。

6.3.1、

<NuxtLink to="/user/1">user-id</NuxtLink>

6.3.2、

<a href="/user/2">user-id-2</a>

6.3.3、

<NuxtLink :to="{ path: `/user/${3}`}">user-id-3</NuxtLink>

6.3.4、编程式路由

<script setup lang="ts">
function toUser() {
    navigateTo({
        path: '/user/4',
        query: {
            name: 'snow'
        }
    })
}
</script>

6.4、加载静态资源

<div>
  <img src="~/assets/nginx.jpg" alt="nginx">
  <img src="~/public/nginx.jpg" alt="nginx">
</div>

nuxt项目tsconfig.json有配置,public目录下的文件可以省略/public目录,我这里测试不可以,后续会再研究

已测试成功,可以省略 “~/public” 目录

6.5、设置页面title,不会在页面展示,只会在页面title部分展示

6.5.1、

<Title>snow-title</Title>

<template>
    <Title>snow-title</Title>
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>

如图:

ctrl + u:

6.5.2、使用useHead()方法

useHead({
    title: 'snow-title-2'
})

设置成功,useHead优先级小于<Title>标签。

6.5.3、同理使用useHead设置页面的TDK信息

<script setup lang="ts">
useHead({
    title: 'snow-title-2',
    meta: [
        { name: 'description', content: 'snow-desc'},
        { name: 'keywords', content: 'snow-kw'}
    ]
})
</script>

相关文章
|
中间件 API
nuxt3:我们开始吧-开发-配置-部署(二)
nuxt3:我们开始吧-开发-配置-部署(二)
634 0
|
存储 应用服务中间件 nginx
nuxt3:我们开始吧-开发-配置-部署(三)
nuxt3:我们开始吧-开发-配置-部署(三)
1741 0
nuxt3:vue-dompurify-html
nuxt3:vue-dompurify-html
638 0
浅谈一下Nuxt3中的layouts
继上一篇文章([nuxt3目录及使用 - 掘金 (juejin.cn)](https://juejin.cn/post/7199265829954715685))之后,我们继续学习Nuxt的相关使用。 # layouts 这次我们先引入一个layouts目录,这个目录是做什么的呢?我们在下面的使用中说清楚。 我们先在根目录下新建一个`layouts`目录,然后我们在`layouts`目录下新建一个`layout1.vue`文件,然后我们开始使用一下神奇的`layouts`。 内容如下: ``` <template> <header> <h1>
|
前端开发 应用服务中间件 网络安全
【Nuxt】Nuxt做官网要求适配PC&Mobile,我的解决方案
前言 项目终于进入了尾声,这段时间主要在忙公司官网的开发,前段时间我在忙另外一个项目的时候,官网这个项目就启动了,团队里的另外一个小伙伴居然用Vue-cli构建了一个项目去做官网,导致我很难李姐,所以我提出重构项目,由我主导开发,写篇文章记录一下项目信息以及部分关键点。
2152 0
|
存储 JavaScript 中间件
Nuxt3 实战 (一):初始化项目
这篇文章介绍了Nuxt框架的基本信息,包括什么是Nuxt以及Nuxt3的优点。文章还介绍了Nuxt3的一些特点,如服务端渲染和静态站点生成、模块化、文件系统路由等。此外,文章还提供了项目安装的步骤和目录结构。最后,文章提到了下一步计划,即配置 Eslint、Prettier、Husky、lint-staged、commitlit项目提交规范的过程。
366 3
Nuxt3 实战 (一):初始化项目
|
资源调度 JavaScript 前端开发
搭建和部署nuxt项目
【8月更文挑战第4天】
|
JavaScript
使用 nuxi build-module 命令构建 Nuxt 模块
【8月更文挑战第29天】以下是使用 `nuxi build-module` 构建 Nuxt 模块的步骤:1. 确保已安装 Node.js 和 npm;2. 创建新目录并初始化 npm 项目;3. 安装 Nuxt 相关依赖;4. 创建模块结构,包括 `index.ts` 入口文件;5. 运行 `nuxi build-module` 构建模块;6. 在 Nuxt 项目中安装并配置该模块。确保遵循 Nuxt 最佳实践以保证稳定性和兼容性。
166 1
|
资源调度 JavaScript 前端开发
安装 Nuxt.js 的步骤和注意事项
【8月更文挑战第6天】
388 3
|
监控 JavaScript 前端开发
Vue 3+Sentry,轻松实现错误追踪!
Vue 3+Sentry,轻松实现错误追踪!