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>

相关文章
|
6天前
|
监控 JavaScript 前端开发
如何进行 Vue 项目的构建和部署?
如何进行 Vue 项目的构建和部署?
69 2
|
10月前
|
中间件 API
nuxt3:我们开始吧-开发-配置-部署(二)
nuxt3:我们开始吧-开发-配置-部署(二)
385 0
|
10月前
|
存储 应用服务中间件 nginx
nuxt3:我们开始吧-开发-配置-部署(三)
nuxt3:我们开始吧-开发-配置-部署(三)
678 0
|
6月前
|
域名解析 开发框架 JavaScript
vue2.0项目从零开发到打包部署
vue2.0项目从零开发到打包部署
71 0
|
6月前
|
JavaScript 前端开发 jenkins
jenkins上部署前端vue项目
jenkins上部署前端vue项目
131 0
|
8月前
|
资源调度 JavaScript 前端开发
nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库
nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库
201 0
|
8月前
|
JavaScript
为老的vueCli项目添加vite支持
为老的vueCli项目添加vite支持
81 0
为老的vueCli项目添加vite支持
|
10月前
|
JavaScript 前端开发
Vue项目本地开发完成部署到服务器后报404,这到底是什么原因呢?
Vue项目本地开发完成部署到服务器后报404,这到底是什么原因呢?
745 0
|
11月前
|
存储 前端开发 JavaScript
SpringBoot+Vue 前后端分离 微服务项目 打包部署全流程(原始部署/宝塔部署)
SpringBoot+Vue 前后端分离 微服务项目 打包部署全流程(原始部署/宝塔部署)
1822 2
SpringBoot+Vue 前后端分离 微服务项目 打包部署全流程(原始部署/宝塔部署)
|
测试技术
vue-cli3打包项目不同环境:开发环境、生产环境、测试环境
vue-cli3打包项目不同环境:开发环境、生产环境、测试环境
217 0