首页 > 其他分享 >Nuxt3页面开发实战探索

Nuxt3页面开发实战探索

时间:2024-06-19 14:10:46浏览次数:18  
标签:实战 Nuxt3 export 组件 nuxt data 页面


title: Nuxt3页面开发实战探索
date: 2024/6/19
updated: 2024/6/19
author: cmdragon

excerpt:
摘要:这篇文章是关于Nuxt3页面开发实战探索的。它介绍了Nuxt3的基础入门,安装与配置,项目结构,内置组件与功能,以及页面与路由的相关内容。Nuxt3是基于Vue 3的服务器端渲染框架,旨在简化Vue应用程序的开发流程,提供最佳的性能和开发

categories:

  • 前端开发

tags:

  • Nuxt3
  • 页面开发
  • 实战探索
  • 前端开发
  • Vue3框架
  • 服务器端渲染
  • 开发流程优化

image

image

cmdragon_cn.png

扫码关注或者微信搜一搜:编程智域 前端至全栈交流与成长

Nuxt3基础入门

2.1 Nuxt3简介

Nuxt3 是一个基于 Vue 3 的服务器端渲染(SSR)框架,它继承了 Nuxt.js 的核心概念,并利用 Vue 3 的最新特性,如组合式
API(Composition API)和<script setup>语法,来提供更加现代化的开发体验。Nuxt3 旨在简化 Vue 应用程序的开发流程,同时提供最佳的性能和开发体验。

2.2 Nuxt3安装与配置

安装

安装 Nuxt.js 的步骤和注意事项 | cmdragon's Blog

要安装 Nuxt3,首先确保你的系统中已经安装了 Node.js(推荐版本为 14 或更高)。然后可以使用以下命令创建一个新的 Nuxt3 项目:

npx nuxi init my-nuxt3-project

这个命令会创建一个名为my-nuxt3-project的新目录,并安装必要的依赖。

配置

Nuxt3 的配置文件是nuxt.config.ts(或nuxt.config.js),位于项目根目录。在这个文件中,你可以定义各种配置,如服务器端口、路由、插件、环境变量等。

// nuxt.config.ts
export default defineNuxtConfig({
  // 配置项
  server: {
    port: 3000, // 服务器端口
  },
  // 其他配置...
})

2.3 Nuxt3项目结构

Nuxt.js 深入浅出:目录结构与文件组织详解 | cmdragon's Blog

Nuxt3 项目遵循一定的目录结构,以下是主要目录和文件的说明:

  • pages/: 页面目录,每个文件对应一个路由。
  • components/: 组件目录,存放可复用的 Vue 组件。
  • layouts/: 布局目录,定义全局页面布局。
  • plugins/: 插件目录,存放可复用的插件。
  • composables/: 组合式函数目录,用于存放可复用的逻辑。
  • assets/: 静态资源目录,如图片、样式表等。
  • store/: 状态管理目录,存放 Vuex 或 Pinia 状态管理文件。
  • app.vue: 应用程序的主组件,可以包含全局样式和布局。
  • nuxt.config.ts(或nuxt.config.js): Nuxt3 的配置文件。
  • package.json: 项目依赖和脚本。

2.4 Nuxt3内置组件与功能

Nuxt3 提供了一系列内置组件和功能,以简化开发流程:

  • <NuxtLayout>: 用于定义页面布局。
  • <NuxtPage>: 用于渲染当前路由对应的页面。
  • <NuxtLink>: 用于创建导航链接。
  • <NuxtLoadingIndicator>: 显示页面加载指示器。
  • <ClientOnly>: 用于只在客户端渲染内容。
  • <ServerOnly>: 用于只在服务器端渲染内容。

此外,Nuxt3 还提供了许多内置功能,如路由系统、中间件、生命周期钩子、状态管理等,以支持复杂的Web应用开发。

页面与路由

3.1 页面文件与路由规则

在 Nuxt3 中,页面文件通常位于pages目录下,每个文件对应一个路由。文件名(不包括扩展名)就是路由路径。例如,pages/about.vue
对应的路由是/about。Nuxt3 使用静态文件作为路由的入口点,这意味着文件名和路由之间是一一对应的。

路由规则通常在nuxt.config.ts中定义,可以使用router对象来配置。例如,设置默认路由:

export default defineNuxtConfig({
  router: {
    base: '/', // 设置网站的根路径
    routes: [
      { path: '/', component: () => import('@/pages/index.vue') }, // 首页
      { path: '/about', component: () => import('@/pages/about.vue') }, // 关于页面
    ]
  }
})

3.2 动态路由与参数传递

动态路由使用冒号:来定义参数,例如:id。当用户访问/users/:id时,id就会被解析为 URL
中的参数。在页面中,可以通过this.$route.params访问这些参数:

export default {
  setup() {
    const id = this.$route.params.id;
    // 使用id
  }
}

3.3 子路由与嵌套路由

子路由允许在单个路由下定义多个子路径。在 Nuxt3 中,可以使用children属性来定义子路由:

export default defineNuxtRoute({
  path: 'users/:userId',
  component: () => import('@/pages/users.vue'),
  children: [
    { path: 'profile', component: () => import('@/pages/users/profile.vue') },
    { path: 'settings', component: () => import('@/pages/users/settings.vue') }
  ]
})

3.4 路由元数据与页面配置

meta属性用于设置页面的元数据,如标题、描述等,对SEO有帮助。在页面组件中,可以这样定义:

export default {
  setup() {
    const meta = {
      title: '用户设置',
      meta: {
        description: '这是用户设置页面的描述',
        keywords: '设置, 用户'
      }
    };
    return { meta };
  }
}

3.5 路由跳转与导航

Nuxt3 提供了多种方式来导航:

  • this.$router.push(path): 向前(浏览器前进)导航到新的路由。
  • this.$router.replace(path): 向前(浏览器前进)导航到新的路由,但不会在浏览器历史记录中留下记录。
  • this.$router.go(n): 直接改变浏览器的前进或后退历史,n 是整数。

使用<NuxtLink>组件可以创建可点击的链接,它们会自动处理路由跳转:

<NuxtLink to="/users/:userId/profile">用户资料</NuxtLink>

这将创建一个链接,点击后会导航到用户资料页面。

页面布局与组件

4.1 页面布局组件(NuxtLayout)

RIPEMD在线加密 | 一个覆盖广泛主题工具的高效在线平台 (cmdragon.cn)
Nuxt3 的页面布局组件(NuxtLayout)用于定义页面的通用结构,如头部、尾部和侧边栏。这些组件通常位于layouts
目录下,如layouts/default.vue。每个页面可以覆盖或继承布局,通过在nuxt.config.ts中配置defaultLayout

export default defineNuxtConfig({
  router: {
    defaultLayout: 'MainLayout'
  },
  components: {
    MainLayout: () => import('@/components/layouts/MainLayout.vue')
  }
})

4.2 页面占位组件(NuxtPage)

NuxtPage是 Nuxt3 中的一个特殊组件,它代表一个单独的页面。每个页面组件(如pages/about.vue)实际上就是一个NuxtPage
,它会自动包含在相应的布局组件中。

4.3 公共组件与页面组件

  • 公共组件:这些组件可以在多个页面中复用,通常用于通用的功能,如导航栏、表单验证等。在components目录下创建,然后在需要的地方导入使用。
  • 页面组件:每个页面有自己的组件,它们只在该页面中使用。例如,pages/about.vue中的AboutContent就是该页面特有的。

4.4 组件通信与状态管理

  • 组件通信:Nuxt3 使用Vue的父子组件、兄弟组件和自定义事件(

    标签:实战,Nuxt3,export,组件,nuxt,data,页面
    From: https://www.cnblogs.com/Amd794/p/18256127

相关文章

  • 【面试实战】# 并发编程
    1.线程状态请解释Java中线程的几种状态,并描述每种状态的特点和转换条件。NEW(新建):线程被创建,但尚未启动。RUNNABLE(可运行):线程正在运行,可能在执行代码,也可能等待操作系统资源。BLOCKED(阻塞):线程在等待监视器锁,以便进入同步块/方法。WAITING(等待):线程等待另一个线程显式地唤......
  • 鸿蒙期末大作业——甜点店铺APP(四)精选页面的详细完善
    一、精选页面的具体分析        精选页面我们采用一级二级列表联动的效果来展示我们商店的甜品。    <1>首先我们需要构造懒加载数据源类型MyDataSource。在types.ets中定义相关的数据类型——用于保存甜品信息的数据类型CustomDataType接口,里面包含四个参......
  • 【鸿蒙实战开发案例】如何构建一个HarmonyOS应用工程
    前言随着春节假期结束各行各业复产复工,一年一度的春招也持续火热起来。最近,有招聘平台发布了《2024年春招市场行情周报(第一期)》。总体来说今年的就业市场还是人才饱和的状态,竞争会比较激烈。但是,通过报告我们也能看到让人眼前一亮的信息,比如华为鸿蒙系统对应的人才市场就......
  • RERCS系统开发实战案例-Part08 FPM 应用程序的表单组件(From UIBB)与列表组件(List UI
    1、新建FromUIBB的FPMApplication的快速启动面板备注:该步骤可第一步操作,也可最后一步操作,本人习惯第一步操作。1)使用事务码LPD_CUST,选择对应的角色与实例进入快速启动板定制页面;2)新建FPMApplication应用程序;注意:此处的应用程序别名用于ListUIBB的实施方法IF_FPM_G......
  • 【暑假Python上岸计划】最新20+Python实战案例,全程干货,30天看完即可接单就业!(基础+进阶
    前言今天给大家分享20+个基于python的实战案例,主要包含:数据分析、可视化、机器学习/深度学习、时序预测等,案例的主要特点:*提供源码:代码都是基于jupyternotebook,附带一定的注释,运行即可*数据齐全:大部分案例都有提供数据,部分案例使用内置数据集学习资料已打包,需要......
  • TensorFlow Object Detect API 实战与踩坑经验分享
    Apple-Banan-OrangeDetection全部代码已上传到本人github项目,欢迎来玩呀━(`∀´)ノ亻!简介本项目起源于本人《人工智能原理》一课的大作业,要求识别苹果、香蕉、橙子三种水果,并用IOU、Precision、Recall、mAP四个指标进行评估(谁拿前3个作为最终指标啊)。一通搜索下来......
  • 2024广东省职业技能大赛云计算赛项实战——容器云平台搭建
    容器云平台搭建前言容器镜像使用的是斗学培训平台提供的镜像包,这东西网上都没有,一堆人要,我是靠自己想的方法获取到了,也不敢给。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我......
  • HTML5期末考核大作业——学生网页设计作业源码HTML+CSS+JavaScript 中华美德6页面带音
    ......
  • 使用docx-preview打印文档时,页数超出和页面元素样式问题
    #在打印时调整内容边距及隐藏Header的问题和解决方案##问题描述在使用JavaScript代码唤起打印窗口时,生成的文档中`<section>`标签自带`padding`样式,这导致内容无法铺满整个A4页面。此外,页面中还有一个`header`元素会占据头部的一部分高度,需要在打印时去掉......
  • linux内存管理(十一)- 页面迁移
    这里有一篇很好的博客宋宝华:论Linux的页迁移(PageMigration)完整版-CSDN博客为什么需要页面迁移?试想系统在经过长时间运行,内存块趋于碎片化,想要分配一块大的连续内存已经不可能了。此时并非没有足够的内存,而只是内存碎片化。这个时候如果可以是已经分配的内存聚集在一起就可以得到......