nuxt3.0学习-四、nuxt3.0的middleware(中间键)、composables(可组合物)以及Plugins(插件目录)

news2024/11/30 8:36:24

Nuxt3.0中间键了解地址

Nuxt提供了一个可定制的路由中间件框架,您可以在整个应用程序中使用它,非常适合在导航到特定路由之前提取要运行的代码;
路由中间件有三种:

  • 匿名(或内联)路由中间件,直接在使用它们的页面中定义。
  • 命名路由中间件,放置在中间件/目录中,在页面上使用时将通过异步导入自动加载。(注意:路由中间件的名称被标准化为kebab情况,所以someMiddleware变成了someMiddleware.)
  • 全局路由中间件,放置在中间件/目录中(带有.Global后缀),并将在每次路由更改时自动运行。

匿名(或内联)路由中间件

<script lang="ts" setup>
export default defineNuxtRouteMiddleware((to, from) => {
  if (to.params.id === '1') {
    return abortNavigation()
  }
  if (to.path !== '/') {
    return navigateTo('/')
  }
})
</script>

命名路由中间件

中间件文件

//中间件引入
definePageMeta({
  middleware: ["auth"]
})

全局路由中间件

全局路由名称增加 global后

import { updataUserInfo } from "@/composables/useUtils";
import {baseOrigin, baiduIncludeApi} from '@/utils/public.js'

export default defineNuxtRouteMiddleware((to, from) => {
  updataUserInfo();

  // 百度收录
  // if(baseOrigin.includes('')){
  //   let res = baiduIncludeApi(`${baseOrigin}${to.href}`)
  // }
});

composables(可组合物)

Nuxt 3 使用该目录通过自动导入自动将您的 Vue 可组合物导入您的应用程序!composables/
在后台,Nuxt自动生成文件以声明类型。.nuxt/imports.d.ts
请注意,您必须运行 ,或者为了让 Nuxt 生成类型。如果在未运行开发服务器的情况下创建可组合对象,TypeScript 将引发错误,例如nuxi preparenuxi devnuxi buildCannot find name ‘useBar’.

只需要设定好,在其他地方使用,无需引入
方法一:使用命名导出

export const useFoo = () => {
  return useState('foo', () => 'bar')
}

方法2:使用默认导出

export default function () {
  return useState('foo', () => 'bar')
}

Plugins(插件目录)

Nuxt 会自动读取目录中的文件,并在创建 Vue 应用程序时加载它们。您可以在文件名中使用或后缀以仅在服务器端或客户端加载插件。

比如引入vantUI

import { defineNuxtPlugin } from '#app';
import vant from 'vant';
import '@vant/touch-emulator';
import 'vant/lib/index.css';
import VueLazyLoad from 'vue-lazyload'
export default defineNuxtPlugin(nuxtApp => {
  nuxtApp.vueApp.use(vant),
  nuxtApp.vueApp.use(VueLazyLoad, {
    preLoad: 1.3,
    error: '',
    loading: '',
    attempt: 1
  })
})

比如引入naive-ui

import { setup } from '@css-render/vue3-ssr'
import { defineNuxtPlugin } from '#app'

export default defineNuxtPlugin((nuxtApp) => {
  if (process.server) {
    const { collect } = setup(nuxtApp.vueApp)
    const originalRenderMeta = nuxtApp.ssrContext?.renderMeta
    nuxtApp.ssrContext = nuxtApp.ssrContext || {}
    nuxtApp.ssrContext.renderMeta = () => {
      if (!originalRenderMeta) {
        return {
          headTags: collect()
        }
      }
      const originalMeta = originalRenderMeta()
      if ('then' in originalMeta) {
        return originalMeta.then((resolvedOriginalMeta) => {
          return {
            ...resolvedOriginalMeta,
            headTags: resolvedOriginalMeta['headTags'] + collect()
          }
        })
      } else {
        return {
          ...originalMeta,
          headTags: originalMeta['headTags'] + collect()
        }
      }
    }
  }
})

只需要在nuxt.config.ts这样引入就是

plugins: [{ src: "~/plugins/vant.ts", ssr: false }],
  build: {
    transpile: ["swiper", "vant"],
  },

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

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

相关文章

最佳 AI 生产力工具:更聪明地工作,而不是更努力地工作

在20世纪50年代&#xff0c;AI 在内存耗尽之前几乎无法完成跳棋游戏。 快进七个激动人心的十年&#xff0c;可以理解自然语言的人工智能系统——大型语言模型 (LLM)——正在成为我们数字工具箱中的重要工具。 在今天的文章中&#xff0c;我们梳理了一些提高生产力的最佳人工智…

【SpringBoot】 设置随机数据 用于测试用例

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 设置随机数据——常用于测试用例 SpringBoot设…

Research Day 2023:Succinct ZKP最新进展

1. 引言 主要见Ying Tong在Research Day 2023上视频分享&#xff1a; Advances in the Efficiency of Succinct Proofs - Ying Tong ZKP技术可用于&#xff1a; 1&#xff09;Verifiable virtual machine&#xff1a;如各种zkEVM和zkVM。2&#xff09;verifiable cloud com…

领跑云原生安全赛道!安全狗云甲获信通院多项荣誉认可

6月6日&#xff0c;ICT 中国2023高层论坛-云原生产业发展论坛在北京成功举办。 作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 据悉&#xff0c;此次论坛主要包含论坛开幕式、成果发布、产业发展等三大部分。云原生领域领军智库、院士专家、企业高层等多位…

企业培训直播场景下嘉宾连线到底是如何实现的?

企业培训直播场景下&#xff0c;进行音视频连线的嘉宾&#xff0c;都拥有面向学员教学的权限&#xff0c;支持多位老师/专家异地同堂授课&#xff0c;那么&#xff0c;这种嘉宾连线到底是如何实现的&#xff1f; 企业培训&#xff0c;如何做到不受时间和地点限制&#xff0c;实…

数据单一触发数据库锁

【引言】 作为一名数据库开发人员或者管理员&#xff0c;那么你一定知道数据库锁在维护数据一致性中的作用。但是&#xff0c;你有没有想过&#xff0c;什么情况下会触发数据库锁呢&#xff1f; 本文将讲述一种常见的情况——数据单一触发数据库锁&#xff0c;并且分享如何避…

KDZD绝缘油介质损耗电阻率测试仪特点

一、概述 测试仪依据GB/T5654-2007《液体绝缘材料相对电容率、介质损耗因数和直流电阻率的测量》设计制造。用于绝缘油等液体绝缘介质的介质损耗因数和直流电阻率的测量。 一体化结构。内部集成了介损油杯、温控仪、温度传感器、介损测试电桥、交流试验电源、标准电容器、高阻计…

我用ChatGPT写2023高考语文作文(一):全国甲卷

2023高考全国甲卷语文作文题目&#xff1a; 人们因技术发展得以更好地掌控时间&#xff0c;但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考&#xff1f;请写一篇文章。 要求&#xff1a;选准角度&#xff0c;确定立意&#xff0c;明确文体&#xff0c;自拟标题&…

Linux系统下SQLite创建数据库, 建表, 插入数据保姆级教程

1,创建数据库: sqlite test.db 我这边是sqlite2版本, 直接使用命令sqlite test.db创建一个名称为test的数据库; test是你自定义是数据库名, 创建好数据库后, 接下来开始创建表格 2.创建表格, 就是常规的sql建表语句 CREATE TABLE ids_logs ( english_details TEXT, chines…

LeetCode_数据结构设计_中等_173.二叉搜索树迭代器

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 实现一个二叉搜索树迭代器类BSTIterator &#xff0c;表示一个按中序遍历二叉搜索树&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterator(TreeNode root)&#xff1a;初始化 BSTIterator 类的一个…

便捷工具箱(更新中)

遇到问题怎么办&#xff1f;不慌&#xff0c;我可以帮你解决 1.浏览器视频播放速度一般只有0.5x&#xff0c;1.0x&#xff0c;1.5x&#xff0c;2.0x四种选项&#xff0c;对于我们来说是不够用的&#xff0c;那该怎么办呢&#xff1f;别慌&#xff0c;有代码。 解决办法&#x…

Python3+Selenium2完整的自动化测试实现之旅(一):自动化测试环境搭建

引言 大多数人可能认为自动化测试很难&#xff0c;但是在我的实践中&#xff0c;我发现只要有正确的工具和环境&#xff0c;自动化测试其实并不困难。 本文将带领大家了解如何使用Python3和Selenium2搭建自动化测试环境&#xff0c;让你在未来的测试工作中事半功倍。作为一名…

安卓逆向 -- SO文件逆向分析

接上节课内容 安卓逆向 -- Frida环境搭建(HOOK实例) 安卓逆向 -- FridaHook某车udid的加密值 安卓逆向 -- FridaHook分析3DES加密值 一、上节课我们找到了get3deskey函数来自原生函数 二、解压apk文件&#xff0c;去lib文件里找到libnative-lib.so文件 三、将so文件拖入ida…

企业通常会采用什么方式与媒体建立关系?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网 胡老师。 媒体机构包括电视台、广播电台、报纸、杂志、网络媒体&#xff0c;视频媒体等。企业与媒体建立联系&#xff0c;可以提升品牌曝光度、塑造公众形象、传递企业信息、增加市场认知和促进业…

阿里云丁宇:云上开发成为主流,Serverless 定义新范式

今天&#xff0c;阿里云峰会粤港澳大湾区在广州开幕&#xff0c;阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇在论坛发言&#xff0c;他表示&#xff1a; Serverless 引领云上开发新范式&#xff0c;通过丰富的原子化服务&#xff0c;全托管、高弹性、免运维的优势&am…

【libdatachannel】俩client本机基于juice与QtSignalServer的ICE交互2

打印日志太多&#xff0c;【libdatachannel】俩client本机基于juice与QtSignalServer的ICE交互 1 死活发不出来。 客户端一系列的状态切换。 kY3k alloc: (location: 04259598) freed alloc: (location: 042629E0) allocated alloc: (location: 04262A50) allocated alloc: …

这才是打开Java面试的正确方式,秋招互联网大厂Java面试八股来袭

金三银四过后招聘旺季就到了&#xff0c;不知道大家是否准备好了&#xff0c;面对金九银十的招聘旺季&#xff0c;如果没有精心准备那笔者认为那是对自己不负责任&#xff1b;就我们 Java 程序员来说&#xff0c;多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点提问基…

跳跳鱼视频处理大师Mac版,使用方法介绍

现在是短视频的时代&#xff0c;每个人都想通过视频来实现自己的营销目的&#xff0c;因此对于视频的使用非常的频繁&#xff0c;这也要求这方面的从业者需要掌握一些基础的视频处理技巧&#xff0c;这对我们在工作上会有很大的帮助。但是专门用于苹果电脑上的音频处理软件非常…

狂野java-MongoDB基本使用

NoSQL&#xff08;非关系型数据库&#xff09; 为什么使用NoSQL 扩容&#xff0c;操作简单分布式计算易扩展&#xff0c;因为 数据之间无关系无需建立字段&#xff0c;自定义数据格式支持大数据量&#xff0c;高性能&#xff08;细粒度Cache&#xff09; 缺点 有限的查询是…

Python3+Selenium2完整的自动化测试实现之旅(二):IE和Chrome浏览器驱动配置

引言 如果你正在进行自动化测试&#xff0c;那么你一定知道浏览器驱动是必不可少的。但是&#xff0c;不同的浏览器驱动配置可能会让你感到头疼。 在我前一篇文章中&#xff0c;我们已经学习了如何搭建自动化测试环境。今天&#xff0c;我将为大家分享如何配置IE和Chrome浏览…