【Nuxt3】modules目录和nuxt3模块的简单介绍

news/2024/7/10 2:46:59 标签: 前端, vue

简言

记录下nuxt3项目中module的用法

modules目录

使用 modules/ 目录在应用程序中自动注册本地模块。
这是一个很好的地方,可以放置您在构建应用程序时开发的任何本地nuxt模块。

nuxt模块相当于npm包,可以发布到npm社区中

在modules/ 目录下的本地模块,会自动注册模块,无需在 nuxt.config.ts文件中注册。
自动注册的文件模式有:

  • modules/*/index.ts ,例如 modules/aa/index.ts
  • modules/*.ts , 例如 modules/one.ts

该目录和其他目录一样,按字母顺序(alphabetical orde)来注册的。

示例

该实例创建了一个名为hello的nuxt模块,然后添加了一个api路由。
启动 Nuxt 时,hello 模块将被注册,/api/hello 路由也将可用。
modules/hello/index.ts :

// `nuxt/kit` is a helper subpath import you can use when defining local modules
// that means you do not need to add `@nuxt/kit` to your project's dependencies
import { createResolver, defineNuxtModule, addServerHandler } from 'nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'hello'
  },
  setup () {
    const { resolve } = createResolver(import.meta.url)

    // Add an API route
    addServerHandler({
      route: '/api/hello',
      handler: resolve('./runtime/api-route')
    })
  }
})

modules/hello/runtime/api-route.ts :

export default defineEventHandler(() => {
  return { hello: 'world' }
})

nuxt模块

Nuxt 提供了一个模块系统,用于扩展框架核心并简化集成。

使用 Nuxt 开发生产级应用程序时,您可能会发现该框架的核心功能还不够。Nuxt 可以通过配置选项和插件进行扩展,但在多个项目中维护这些自定义功能可能会非常繁琐、重复和耗时。这些可以在模块里使用。

这也是 Nuxt 提供模块系统以扩展内核的原因之一。Nuxt 模块是异步函数,在使用 nuxi dev 在开发模式下启动 Nuxt 或使用 nuxi build 为生产模式构建项目时按顺序运行。它们可以覆盖模板、配置 webpack 加载器、添加 CSS 库并执行许多其他有用的任务。

最重要的是,Nuxt 模块可以在 npm 包中发布。这样,它们就可以在不同项目中重复使用,并与社区共享,从而帮助创建一个高质量附加组件的生态系统。

可以简单理解为nuxt类型的npm包,它可以为项目整体扩展很多内容(css、plugin等)。

配置模块

本地开发的模块可以放到modules目录下。
npm上的需要在nuxt.config.ts配置。

安装模块后,您可以将它们添加到 nuxt.config.ts 文件的 modules 属性下。模块开发者通常会提供额外的使用步骤和细节

export default defineNuxtConfig({
  modules: [
    // Using package name (recommended usage)
    '@nuxtjs/example',

    // Load a local module
    './modules/example',

    // Add module with inline-options
    ['./modules/example', { token: '123' }],

    // Inline module definition
    async (inlineOptions, nuxt) => { }
  ]
})

例如 :
安装 pinia.
首先npm安装pinia和 @pinia/nuxt。
然后在nuxt.config.ts配置使用即可正常使用。

npm install pinia @pinia/nuxt

在这里插入图片描述

开发模块

Nuxt 模块是使用 nuxi dev 在开发模式下启动 Nuxt 或使用 nuxi build 为生产构建项目时按顺序运行的功能。有了模块,您就可以封装、正确测试并以 npm 包的形式共享自定义解决方案,而无需在项目中添加不必要的模板,也无需更改 Nuxt 本身。
官网模块开发指南

我们可以考虑两种 Nuxt 模块:

  • 在 npm 上发布的模块–你可以在 Nuxt 网站上看到一些社区模块的列表。
  • "本地 "模块,它们存在于 Nuxt 项目本身,或者在 Nuxt 配置中内联,或者作为模块目录的一部分。

在底层,Nuxt 模块定义是一个简单的、可能是异步的函数,接受内联用户选项和 nuxt 对象,以便与 Nuxt 交互。

您可以使用 Nuxt Kit 提供的高层 defineNuxtModule 辅助程序为该函数获取类型提示支持。

import { defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule((options, nuxt) => {
  nuxt.hook('pages:extend', pages => {
    console.log(`Discovered ${pages.length} pages`)
  })
})

官网不建议这样使用,它们建议使用带 meta 属性的 object-syntax 来标识模块,尤其是在发布到 npm 时。

import { defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    // Usually the npm package name of your module
    name: '@nuxtjs/example',
    // The key in `nuxt.config` that holds your module options
    configKey: 'sample',
    // Compatibility constraints
    compatibility: {
      // Semver version of supported nuxt versions
      nuxt: '^3.0.0'
    }
  },
  // Default configuration options for your module, can also be a function returning those
  defaults: {},
  // Shorthand sugar to register Nuxt hooks
  hooks: {},
  // The function holding your module logic, it can be asynchronous
  setup(moduleOptions, nuxt) {
    // ...
  }
})

更多模块使用方法参考官网:nuxt3 moudules guide

结语

结束了。


http://www.niftyadmin.cn/n/5456985.html

相关文章

<el-table>设置一列为固定字段,其他列为循环生成

<el-table :data"tableData" style"width: 100%"><el-table-columnprop"name"label"固定字段名":formatter"formatter"></el-table-column><el-table-columnv-for"(item, index) in wordsColumns…

数据结构——链表(练习题)

大家好&#xff0c;我是小锋我们继续来学习链表。 我们在上一节已经把链表中的单链表讲解完了&#xff0c;大家感觉怎么样我们今天来带大家做一些练习帮助大家巩固所学内容。 1. 删除链表中等于给定值 val 的所有结点 . - 力扣&#xff08;LeetCode&#xff09; 我们大家来分…

Linux中关于vim相关操作的练习题,实操训练,配有相应的答案提示

3月25日vim相关操作 题目1&#xff1a; 1&#xff09;将/etc/hosts网络配置文件复制到/tmp/mydir下&#xff1b; 2&#xff09;使用vim编辑器打开hosts文件&#xff0c;按i进入编辑模式&#xff0c;将本机IP地址和主机名(client1)映射。 3&#xff09;按下esc键回到命令模式…

transformer中selfattention简单实现

AI大模型学习 在当前技术环境下&#xff0c;AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力&#xff0c;还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法&#xff0c;AI大模型学习能够不断提升模型的准确性和效率&#xff0c;为人类生活和工作…

计算机网络:物理层 - 信道极限容量

计算机网络&#xff1a;物理层 - 信道极限容量 实际信道中的数字信号奈式准则香农公式练习 实际信道中的数字信号 信号在传输过程中会受到各种因素的影响&#xff0c;如图所示&#xff1a; 这是一个数字信号&#xff0c;当它通过实际的信道后&#xff0c;波形会产生失真&#…

大前端-postcss安装使用指南

PostCSS 是一款强大的 CSS 处理工具&#xff0c;可以用来自动添加浏览器前缀、代码合并、代码压缩等&#xff0c;提升代码的可读性&#xff0c;并支持使用最新的 CSS 语法。以下是一份简化的 PostCSS 安装使用指南&#xff1a; 一、安装 PostCSS 在你的项目目录中&#xff0c…

Springboot下micrometer+prometheus+grafana进行JVM监控的操作过程

背景 同事今天提交了一个补丁. 给基于Springboot的产品增加了micrometer等收集jvm信息的工具 但是这边springboot的版本比较高,导致有异常. 启动直接失败了. 晚上九点多时进行了紧急回退. 但是十点的时候想了想是不是可以利用一下,进行grafana的监控. 发现还是比较简单的. 这…

PostCSS安装与基本使用

PostCSS安装与基本使用 PostCSS是一款基于JavaScript的CSS处理器&#xff0c;它允许你使用现代CSS特性&#xff0c;并通过插件将其转换为大多数浏览器能够理解的CSS。以下是如何安装和使用PostCSS的基本步骤&#xff1a; 1. 安装PostCSS及其CLI工具 在全局环境中安装PostCSS…