1.1.2 • Published 6 months ago

@kne/fastify-namespace v1.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

fastify-namespace

描述

用于管理 Fastify 插件命名空间的 Node.js 模块,提供自动加载、命名空间管理和全局配置合并功能

安装

npm i --save @kne/fastify-namespace

概述

功能概述

fastify-namespace 是一个 Fastify 插件,用于实现模块的自动化命名空间管理和动态加载。主要功能包括:

  • 自动检测并加载目录/文件模块
  • 为模块创建命名空间代理
  • 维护全局命名空间合并
  • 支持多版本 API 管理
  • 提供全局共享数据功能

核心功能

1. 模块自动加载
  • 文件模块:自动 require 指定的 JS 文件
  • 目录模块:自动加载目录下的所有文件(使用 @fastify/autoload)
2. 全局命名空间
// 访问全局命名空间
fastify.namespace.version // => '1.0.0'

配置选项

{
  name: 'mySpace',      // 必填,命名空间名称
  modules: [            // 模块列表
    ['module1', './path/to/file.js'],
    ['module2', './path/to/directory'],
    ['func1', func1],
    ['obejct1', object1]
  ],
  global: {              // 可选,全局变量
    config: 'value';
  },
  options: {            // 可选,传递给模块的选项
    prefix: '/v1';
  }
}

实际应用场景

场景1:API 版本管理
fastify.register(fastifyNamespace, {
  name: 'v1',
  modules: [
    ['auth', './api/v1/auth'],
    ['users', './api/v1/users']
  ],
  global: { apiVersion: 1 }
});

fastify.register(fastifyNamespace, {
  name: 'v2',
  modules: [
    ['auth', './api/v2/auth'],
    ['users', './api/v2/users']
  ],
  global: { apiVersion: 2 }
});
场景2:插件聚合
fastify.register(fastifyNamespace, {
  name: 'plugins',
  modules: [
    ['swagger', './plugins/swagger'],
    ['socketio', './plugins/socketio']
  ]
});

最佳实践

  1. 建议将相关功能模块组织在单独的目录中
  2. 对于大型项目,可以分层级使用多个命名空间
  3. 通过 fastify.namespace 访问合并后的全局命名空间
  4. 模块路径建议使用绝对路径
  5. 命名空间名称不能重复

示例

示例代码

API

核心配置项

属性名说明类型默认值必填
name命名空间名称string-
modules模块配置数组Array<string, string|object|function>[]
global全局共享变量object{}
options传递给模块的选项object{}

模块配置项

属性名说明类型示例
[0]模块名称string'users'
[1]模块路径/对象/函数string|object|function'./routes/users.js'userService

类型定义 (TypeScript)

interface NamespaceOptions {
  name: string;
  modules: Array<[string, string | object | Function]>;
  global?: Record<string, any>;
  options?: Record<string, any>;
}
1.1.1

6 months ago

1.0.2

11 months ago

1.1.0

6 months ago

1.0.1

11 months ago

1.0.0

11 months ago

1.1.2

6 months ago

1.0.3

11 months ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago