13 nuxt3学习(新建页面 内置组件 assets 路由)

news2024/11/15 15:52:55

新建页面

Nuxt项目中的页面是在 pages目录 下创建的

  • 在pages目录创建的页面,Nuxt会根据该页面的目录结构和其文件名来自动生成对应的路由。
  • 页面路由也称为文件系统路由器(file system router),路由是Nuxt的核心功能之一

方式一:手动创建(文件与文件夹方式均可以)
在这里插入图片描述
方式二:命令行创建
npx nuxi add page home # 创建home页面(单文件)
npx nuxi add page detail/[id] # 创建detail页面(文件夹)
npx nuxi add page user-[role]/[id] # 创建user页面

内置组件

Nuxt3 框架也提供一些内置的组件,常用的如下:

  1. SEO组件: Html、Body、Head、Title、Meta、Style、Link、NoScript、Base
  2. NuxtWelcome:欢迎页面组件,该组件是 @nuxt/ui的一部分
  3. NuxtLayout:是 Nuxt 自带的页面布局组件
  4. NuxtPage:是 Nuxt 自带的页面占位组件
    • 需要显示位于目录中的顶级或嵌套页面 pages/
    • 是对 router-view 的封装
  5. ClientOnly:该组件中的默认插槽的内容只在客户端渲染
    • 而fallback插槽的内容只在服务器端渲染
  6. NuxtLink:是 Nuxt 自带的页面导航组件
    • 是 Vue Router组件 和 HTMLa标签的封装。
  7. 等等

assets

资源目录

Nuxt使用两个目录来处理像stylesheets, fonts 或 images这样的资产。

  • public/目录内容原样提供给服务器根目录。
  • assets/目录按惯例包含你想要构建工具(Vite或webpack)处理的每个资产。

public

  1. 用作静态资产的公共服务器,可在应用程序上直接通过 URL 直接访问
  2. 比如:引用public/img/ 目录中的图像文件
    • 在静态 URL 中可用 /img/nuxt.png,如下图
    • 静态的URL也支持在背景中使用
<template>
  <img src='/img/nuxt.png'/>
</template>

assets

  1. assets经常用于存放如样式表、字体或 SVG的资产
  2. 可以使用 ~/assets/ 路径引用位于assets目录中的资产文件
  3. ~/assets/ 路径也支持在背景中使用
<template>
  <img src='~/assets/img/nuxt.png'/>
</template>

全局css样式

  1. 手动导入
<style scoped lang="scss">
/* 1.手动导入全局样式 */
/* @import "~/assets/styles/variables.scss"; */

// as vb: 给这个模块起一个命名空间
// as * : 可以省略命名空间
// @use 和 @import
/* @use "~/assets/styles/variables.scss" as bv; */
/* @use "~/assets/styles/variables.scss" as *; */

.local-style {
  /* color: vb.$fsColor; */
  color: $fsColor;
  font-size: $fs20;
  @include border();
}
</style>
  1. nuxt.config配置

css:您可以定义要全局设置的CSS文件/模块/库(包含在每个页面中)。
Nuxt将根据其扩展名自动猜测文件类型,并使用适当的预处理器。如果需要使用它们,您仍然需要安装所需的加载器。
vite: 要在Nuxt组件样式中全局插入语句,可以使用nuxt.config 文件中的Vite选项。

export default defineNuxtConfig({
  css: [
    "@/assets/styles/main.css",
    "@/assets/styles/global.scss",
    "@/assets/cus-font/iconfont.css", // 自定字体图标
  ],
  vite: {
    css: {
      preprocessorOptions: {
        scss: {
          // 自动的给  scss 模块首行添加额外的数据:@use "@/assets/styles/variables.scss" as *;
          additionalData: '@use "@/assets/styles/variables.scss" as *;',
        },
      },
    },
  },
});

字体图标

  1. 将字体图标存放在assets目录下
  2. 字体文件可以使用 ~/assets/ 路径引用。
  3. 在nuxt.config配置文件中导入全局样式
  4. 在页面中就可以使用字体图标了
// assets/cus-font/iconfont.css
@font-face {
  font-family: "iconfont"; /* Project id  */
  src: url("~/assets/cus-font/iconfont.ttf") format("truetype");
}
export default defineNuxtConfig({
  css: [
    "@/assets/cus-font/iconfont.css", // 自定字体图标
  ],
});

路由

组件导航(NuxtLink)

  1. NuxtLink是Nuxt内置组件,是对 RouterLink 的封装,用来实现页面的导航。
    • 该组件底层是一个标签,因此使用 a + href 属性也支持路由导航
    • 但是用a标签导航会有触发浏览器默认刷新事件,而 NuxtLink 不会,NuxtLink还扩展了其它的属性和功能
    • 当NuxtLink进入客户端的视口时,Nuxt将自动提前预取链接页面的组件和有效载荷(生成的页面),从而实现更快的导航。
  2. 应用Hydration后(已激活,可交互),页面导航会通过前端路由来实现。这可以防止整页刷新,并允许动画过渡。
  3. 当然,手动输入URL后,点击刷新浏览器也可导航,这会导致整个页面刷新
  4. NuxtLink 组件属性:
    • to:支持路由路径、路由对象、URL
    • href:to的别名
    • activeClass:激活链接的类名
    • target:和a标签的target一样,指定何种方式显示新页面
    • 等等
<NuxtLink to="/">index</NuxtLink>
<NuxtLink to="/home">home</NuxtLink>

编程导航(navigateTo)

navigateTo 函数在服务器端和客户端都可用,也可以在插件、中间件中使用,也可以直接调用以执行页面导航,例如:

  • 当用户触发该goToProfile()方法时,我们通过navigateTo函数来实现动态导航。
  • 建议: goToProfile方法总是返回 navigateTo 函数(该函数不需要导入)或 返回异步函数

navigateTo( to , options) 函数:

  • to: 可以是纯字符串 或 外部URL 或 路由对象
  • options: 导航配置,可选
    • replace:默认为false,为true时会替换当前路由页面
    • external:默认为false,不允许导航到外部连接,true则允许
    • 等等
function goToCategory() {
  return navigateTo("/category");
}
function gotoCategory2() {
  return navigateTo(
     {
       path: "/category",
       query: {
         id: 200,
       },
     },
     {
       replace: true, // 是否是替换当前的页面
     }
   );
}
function gotoCategory2() {
  return navigateTo("https://www.jd.com", {
    external: true,
  });
}

编程导航(useRouter)

Nuxt3z中的编程导航除了可以通过 navigateTo 来实现导航,同时也支持 useRouter ( 或 Options API 的 this.$router )
useRouter常用的API

  • back:页面返回,和 一样 router.go(-1)
  • forward:页面前进,同 router.go(1)
  • go:页面返回或前进,如 router.go(-1) or router.go(1)
  • push:以编程方式导航到新页面。建议改用 navigateTo 。支持性更好
  • replace:以编程方式导航到新页面,但会替换当前路由。建议改用 navigateTo 。支持性更好
  • beforeEach:路由守卫钩子,每次导航前执行(用于全局监听)
  • afterEach:路由守卫钩子,每次导航后执行(用于全局监听)
// useRouter
let router = useRouter();
function goToCart() {
  router.push("/cart"); // navigateTo
}
function goBack() {
  router.go(-1);
}

// 路由的守卫
router.beforeEach((to, form) => {
  console.log(to);
  console.log(form);
});

动态路由

Nuxt3 和 Vue一样,也是支持动态路由的,只不过在Nuxt3中,动态路由也是根据目录结构和文件的名称自动生成
动态路由语法:

  • 页面组件目录 或 页面组件文件都 支持 [ ] 方括号语法
  • 方括号里编写动态路由的参数

例如

  • pages/detail/[id].vue -> /detail/:id
  • pages/detail/user-[id].vue -> /detail/user-:id
  • pages/detail/[role]/[id].vue -> /detail/:role/:id
  • pages/detail-[role]/[id].vue -> /detail-:role/:id

动态路由 和 index.vue 能同时存在, Next.js也可以
在这里插入图片描述
如果有类型报错 删除.nuxt文件

npm run postinstall

路由参数

动态路由参数

  • 通过 [] 方括号语法定义动态路由,比如:/detail/[id].vue
  • 页面跳转时,在URL路径中传递动态路由参数,比如:/detail/10010
  • 目标页面通过 route.params 获取动态路由参数

查询字符串参数

  • 页面跳转时,通过查询字符串方式传递参数,比如:/detail/10010?name=liujun
  • 目标页面通过 route.query 获取查询字符串参数
<script lang="ts" setup>
// 拿到动态路由的参数
const route = useRoute();
const { id } = route.params;
const { name } = route.query;
</script>

404页面

捕获所有不配路由(即 404 not found 页面)

  • 通过在方括号内添加三个点 ,如:[…slug].vue 语法,其中slug可以是其它字符串。
  • 除了支持在 pages根目录下创建,也支持在其子目录中创建。
  • 在pages根目录下创建匹配所有404页面
  • 在子目录下创建仅匹配当前路由后的,比如 在pages/detail/[…slug].vue 仅匹配 /detail/{没有的页面}
    在这里插入图片描述

路由匹配规则

预定义路由优先于动态路由,动态路由优先于捕获所有路由。请看以下示例:

  1. 预定义路由:pages/detail/create.vue
    • 将匹配 /detail/create
  2. 动态路由:pages/detail/[id].vue
    • 将匹配/detail/1, /detail/abc 等。
    • 但不匹配 /detail/create 、/detail/1/1、/detail/ 等
  3. 捕获所有路由:pages/detail/[…slug].vue
    • 将匹配 /detail/1/2, /detail/a/b/c 等。
    • 但不匹配 /detail 等

嵌套路由

Nuxt 和 Vue一样,也是支持嵌套路由的,只不过在Nuxt中,嵌套路由也是根据目录结构和文件的名称自动生成。
编写嵌套路由步骤:

  1. 创建一个一级路由,如:parent.vue
  2. 创建一个与一级路由同名同级的文件夹,如: parent
  3. 在parent文件夹下,创建一个嵌套的二级路由
    • 如:parent/child.vue, 则为一个二级路由页面
    • 如: parent/index.vue 则为二级路由默认的页面
  4. 需要在parent.vue中添加 NuxtPage 路由占位
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DHTMLX Suite 8.0 重大发布,新增更多新主题、热图图表、辅助功能支持功能

DHTMLX Suite 是一个用于构建跨浏览器Web应用和移动应用的强大JavaScript UI库。DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件&#xff0c;这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Spreadsheet正版试…

动态网站开发讲课笔记04:Servlet基础

文章目录零、本节学习目标一、Servlet基础&#xff08;一&#xff09;Servlet概述1、Servlet是什么2、Servlet容器3、Servlet应用程序的体系结构&#xff08;二&#xff09;Servlet的特点1、功能强大2、可移植3、性能高效4、安全性高5、可扩展&#xff08;三&#xff09;Servle…

数据结构刷新知识总结,为了与题目分开,特地在这里开一篇博客

文章目录二叉树、树、森林的转换二叉树的五个特性常用算法总结常用算法详解图的概念堆排序哈希查找二叉树、树、森林的转换 树转二叉树 二叉树转树 森林转二叉树 二叉树转森林 二叉树的五个特性 性质1&#xff1a;在二叉树的第i层上至多有2i-1个结点性质2&#xff1a;深度为…

Android动态获取权限(详细教程附代码)

Android动态获取权限概述动态获取权限具体实现layout布局代码回调函数onRequestPermissionsResult权限判断工具类清单文件方式一&#xff1a;懒汉式方式二&#xff1a;饿汉式概述 如果是android6.0以下的版本&#xff0c;只需要在manifest声明对应的权限即可。但是这样会大大降…

美颜sdk动态贴纸的实现流程

随着移动互联网时代的到来&#xff0c;各式各样的 APP层出不穷&#xff0c;从最初的微信、 QQ到如今的抖音、快手等等&#xff0c;再到如今的微博、小红书等等&#xff0c;各式各样的 APP不断涌现。从最开始简单的图片展示到视频聊天&#xff0c;再到现如今丰富多样的各种动态贴…

rip题解

1.查看文件保护机制 使用的是新版本的checksec 2.拖入IDA分析 查壳 是一个64文件&#xff0c;拖入64位IDA 这个文件就是我们要攻击的服务器中的一个进程的代码&#xff0c;进程就是一个正在运行的程序 分析敏感函数 打开字符串窗口 跟进&#xff0c;光标点在command&#x…

Linux: ARM GIC只中断CPU 0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI 中断CPU亲和性4.2.2 GIC初始化&#xff1a;缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5.…

【微信小程序】-- 全局配置 -- window - 下拉刷新 上拉触底(十六)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)

Alex实现图像分类:模型原理+训练+预测 图像分类或者检索任务在浏览器中的搜索操作、爬虫搜图中应用较广,本文主要通过Alex模型实现猫狗分类,并且将可以复用的开源模型在文章中给出!!!数据集可以由此下载:Data本文将从以下内容做出讲述: 1.模型简介及环境搭建2.数据集准…

微纳制造期末复习

章节分为六个模块&#xff1a; 1. 微纳制造中的材料 2.光刻技术 3.微纳制造中使用的技术 4.刻蚀 5.沉积 7.微纳刻蚀 根据导电性区分材料&#xff1a;导体&#xff0c;半导体&#xff0c;绝缘体 晶体&#xff1a;长程有序 多晶&#xff1a;短程有序 非晶&#xff1a;无序…

八 SpringMVC【拦截器】登录验证

目录&#x1f6a9;一 SpringMVC拦截器✅ 1.配置文件✅2.登录验证代码&#xff08;HandlerInterceptor&#xff09;✅3.继承HandlerInterceptorAdapter&#xff08;不建议使用&#xff09;✅4.登录页面jsp✅5.主页面&#xff08;操作页面&#xff09;✅6.crud用户在访问页面时 只…

【算法】PatchMatch立体匹配算法_原理解析

目录 前言 原理解析 1.倾斜支持窗口&#xff08;Slanted Support Windows&#xff09; 什么是视差平面&#xff1f; 为什么视差和像素坐标点之间的关系可以解释为平面方程&#xff1f; 视差平面的通用参数方程和点加法向量方程 什么是倾斜支持窗口&#xff1f; 2.基于倾…

宏基因组鉴定病毒流程中需要的生物信息工具

谷禾健康 许多流行病的爆发都是病毒引起的&#xff0c;面对新的传染性基因组出现的最佳策略是及时识别&#xff0c;以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…

Mel Spectrogram

参考链接&#xff1a; Short-time Fourier transform - MATLAB stft- MathWorks 中国 https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53 a spectrogram as a bunch of FFTs stacked on top of each other. 给出hop length后&#xff0…

TMP耗时较高的优化问题

1&#xff09;TMP耗时较高的优化问题 ​2&#xff09;Unity重载Object后&#xff0c;如何判定物体是否为空 3&#xff09;SRP Batch在添加unity_SpecCube后的问题 4&#xff09;堆内存会持续上升&#xff0c;如何用UWA报告来分析 这是第326篇UWA技术知识分享的推送&#xff0c;…

大话数据结构-栈

1 概述 栈&#xff08;Stack&#xff09;是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶&#xff08;top&#xff09;&#xff0c;另一端称为栈底&#xff08;bottom&#xff09;&#xff0c;不含任何数据元素的栈称为空栈&#xff0c;栈又称为后进…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(三)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

MyBatisPlus Study Notes

文章目录1 MyBatisPlus概述1.1 MyBatis介绍1.2 MyBatisPlus特性2 标准数据层开发2.1 MyBatisPlus的CRUD操作API2.2 分页功能接口实现2.2.1 config&#xff08;配置层&#xff09;拦截器实现2.2.2 Dao(Mapper)数据访问层&#xff08;CRUD&#xff09;操作2.2.3 Junit单元测试进行…

新版本GPU加速的tensorflow库的配置方法

本文介绍在Anaconda环境中&#xff0c;配置可以用GPU运行的Python新版tensorflow库的方法。 在上一篇文章Anaconda配置Python新版本tensorflow库&#xff08;CPU、GPU通用&#xff09;的方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/129285815&am…

【分布式】10张图带你彻底搞懂限流、熔断、服务降级

文章目录1 限流1.1 限流指标1.1.1 TPS1.1.2 HPS1.1.3 QPS1.2 限流方法1.2.1 流量计数器1.2.2 滑动时间窗口1.2.3 漏桶算法1.2.4 令牌桶算法1.2.5 分布式限流1.2.6 hystrix限流1.2.6.1 信号量限流1.2.6.2 线程池限流2 熔断2.1 断路器的状态2.2 需要考虑的问题2.3 使用场景3 服务…