title: Nuxt框架中内置组件详解及使用指南(二)

date: 2024/7/7

updated: 2024/7/7

author: cmdragon

excerpt:

摘要:“本文详细介绍了Nuxt 3中和组件的使用方法,包括组件的基本概念、属性、自定义属性、获取引用以及完整示例,展示了如何在Nuxt项目中有效利用这两个组件。

categories:

  • 前端开发

tags:

  • Nuxt3
  • 组件
  • Vue
  • 前端
  • 开发
  • 教程
  • 代码

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

Nuxt 3 中<NuxtPage>组件的使用指南与示例

<NuxtPage>组件用于显示位于pages/目录中的页面。

一、 组件的基本概念

组件是 Nuxt 内置的,它实际上是对 Vue Router 的 <RouterView> 组件的封装。这意味着它承担着根据路由规则来正确显示相应页面内容的重要职责。

二、 组件的属性

  1. name 属性

    • 类型:字符串
    • 作用:告诉 RouterView 在匹配的路由记录的组件选项中使用对应名称渲染组件。
    • 示例:如果您有多个具有不同名称的页面组件,通过设置 name 属性可以准确指定要渲染的组件。
  2. route 属性

    • 类型:RouteLocationNormalized
    • 作用:提供已解析的所有组件的路由位置信息。
  3. pageKey 属性

    • 类型:可以是字符串或函数

    • 作用:控制 组件何时重新渲染。

    • 示例:

      • 传递 static 键, 组件在挂载时只会渲染一次。
      <template>
      <NuxtPage page-key="static" />
      </template>
      • 使用基于当前路由的动态键,如 route => route.fullPath 。
      <NuxtPage :page-key="route => route.fullPath" />
      
      

需要特别注意的是,在使用 pageKey 时,不要使用 $route 对象,因为这可能会在 与 一起渲染页面时引发问题。

此外,pageKey 还可以通过 pages 目录中的 Vue 组件的 definePageMeta 来传递。

三、获取页面组件的引用

要获取 组件的引用,可以通过以下方式:

<template>
<NuxtPage ref="page" />
</template> <script>
const page = ref() function logFoo () {
page.value.pageRef.foo()
}
</script>

在上述代码中,我们定义了一个名为 page 的引用,并通过 page.value.pageRef 来访问页面组件的相关方法或属性。

四、自定义属性

组件还支持自定义属性,您可以根据需要向下传递这些属性。并且可以通过 Nuxt 应用的 attrs 来访问这些自定义属性。

例如:

<NuxtPage :foobar="123" />

在模板中可以使用 $attrs.foobar ,或者在脚本中使用 useAttrs().foobar 来获取其值。

完整示例:

步骤 1: 创建一个 Nuxt.js 项目

首先,你需要安装 Node.js 和 npm。然后,你可以使用以下命令创建一个新的 Nuxt.js 项目:

npx create-nuxt-app my-nuxt-project

按照提示完成安装和配置。

步骤 2: 创建一个页面组件

在 pages/ 目录下,创建一个新的页面组件,例如 about.vue

<template>
<div>
<h1>About Page</h1>
<p>This is the about page.</p>
</div>
</template> <script>
export default {
name: 'AboutPage'
}
</script> <style scoped>
/* 在这里添加页面样式 */
</style>

步骤 3: 在页面中使用 <NuxtPage> 组件

现在,我们可以在父组件中使用 <NuxtPage> 来渲染 about.vue 页面。在 pages/index.vue 中添加以下代码:

<template>
<div>
<h1>Welcome to Nuxt.js</h1>
<NuxtPage />
</div>
</template> <script>
export default {
name: 'IndexPage'
}
</script> <style scoped>
/* 在这里添加页面样式 */
</style>

在这个例子中,<NuxtPage> 会自动加载并渲染 about.vue 组件,因为 index.vue 是 Nuxt.js 的默认入口页面。

步骤 4: 运行项目并查看结果

在项目根目录下,运行以下命令来启动开发服务器:

npm run dev

打开浏览器并访问 http://localhost:3000,你应该能看到一个欢迎标题和一个由 <NuxtPage> 渲染的关于页面。

Nuxt 3 中<NuxtLayout>组件的使用指南与示例

Nuxt 提供了 <NuxtLayout> 组件来在页面和错误页面上显示布局。

基础用法

首先,让我们看看如何在 app.vue 或 error.vue 中使用 <NuxtLayout> 来激活默认布局。

app.vue 示例:

<template>
<NuxtLayout>
<!-- 页面内容放在这里 -->
<div>这是页面内容</div>
</NuxtLayout>
</template>

在上面的代码中,<NuxtLayout> 组件被用作包裹页面内容的容器。它会自动使用 layouts/default.vue 文件作为布局。

指定布局名称

如果你想要使用自定义的布局,可以通过 name 属性来指定布局名称。

pages/index.vue 示例:

<script setup>
const layout = 'custom'
</script> <template>
<NuxtLayout :name="layout">
<NuxtPage />
</NuxtLayout>
</template>

在上面的代码中,我们通过一个响应式引用 layout 来指定布局名称为 custom,这会渲染 layouts/custom.vue 文件。

注意:  布局名称会被转换为 kebab-case,所以如果你的布局文件名为 errorLayout.vue,那么在传递给 <NuxtLayout> 时应该使用 error-layout

传递附加 Props

过渡效果

获取布局组件的 Ref

完整示例

余下文章内容请点击跳转至 个人博客页面 或者 扫码关注或者微信搜一搜:编程智域 前端至全栈交流与成长,阅读完整的文章:Nuxt框架中内置组件详解及使用指南(二) | cmdragon's Blog

往期文章归档:

Nuxt框架中内置组件详解及使用指南(二)的更多相关文章

  1. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  2. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  3. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. python3 内置函数详解

    内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...

  5. 序列内置方法详解(string/list/tuple)

    一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...

  6. Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名. 可以查看所有的字符串的内置方法,如: 1> count ...

  7. for循环与内置方法详解

    ''' for循环与内置方法详解 ''' # 循环:重复(按照某种规律的)做一件事情 # lt = [1, 2, 3, 4] # # ind = 0 # # while True: # print(l ...

  8. Perl中的特殊内置变量详解

    #!/usr/bin/perl -w @array = qw(a b c d); foreach (@array) { print $_," "; } 例子的作用就是定义一个数组并 ...

  9. JSP内置对象详解

    jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request ...

  10. Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

    前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...

随机推荐

  1. go-admin 视频教程

    https://cloud.189.cn/t/6JJ3uqreqyai (访问码:2xn5) 感谢 熊猫 同学 整理 失效了可以去B站看 https://www.bilibili.com/video/ ...

  2. element Tree 树形控件

    文档地址 https://element.eleme.cn/#/zh-CN/component/tree 代码地址 https://gitee.com/wBekvam/vue-shop-admin/b ...

  3. spring-boot集成Quartz-job存储方式一JDBC

    1.项目jar包依赖引入 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...

  4. 第二届黄河流域网络安全技能挑战赛Web_wirteup

    前言 好久没写过比赛的wp了,黄河流域的web出的不错,挺有意思了,花了点时间,也是成功的ak了 myfavorPython 注册登录,一个base64输入框,猜测pickle反序列化,简单测试下,返 ...

  5. 密码学—Vigenere破解Python程序

    文章目录 概要 预备知识点学习 整体流程 技术名词解释 技术细节 小结 代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 ...

  6. Vue 3.3 发布

    本文为翻译 原文地址:宣布推出 Vue 3.3 |The Vue Point (vuejs.org) 今天我们很高兴地宣布 Vue 3.3 "Rurouni Kenshin" 的发 ...

  7. sass 混合指令 (Mixin Directives)详解

    ​ 混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left.混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变 ...

  8. 阿里巴巴 MySQL 数据库之建表规约(一)

    建表规约 强制部分 [强制] 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否). 说明:任何字段如果为非负数,必须是 ...

  9. WPF基础之样式设置和模板化(三)

    IsItemsHost 属性在此示例中,一个必需的重要属性是 IsItemsHost 属性.IsItemsHost 属性用于指示在 ItemsControl(如处理项列表的 ListBox 控件)的模 ...

  10. QGIS开发笔记(三):Windows安装版二次开发环境搭建(下):将QGis融入QtDemo,添加QGis并加载tif遥感图的Demo

    前言   使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车.无人船.无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtC ...