跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在 Node.js 中如何合理的调配某些通用实例对象?(如 Redis)
未分類
5 2 月 2021

在 Node.js 中如何合理的调配某些通用实例对象?(如 Redis)

在 Node.js 中如何合理的调配某些通用实例对象?(如 Redis)

資深大佬 : chogath 0

一、模块导入的方式:

// redis.ts  export const redis = new ioRedis(options);  // service.ts  import { redis } from './redis'  const func1 = async () => { await redis.get('demo') }; 

二、egg.js app 全局属性:

 module.exports.login = function* (ctx) {     const {app} = this     const form = ctx.request.body     let time = 3600 * 24 * 30 //token 过期时间     let token = generateToken({_id: form._id}, time)// 生成 token     app.redis.set(form.username, token) // 把 token 存入 redis 

三、Nest.js 依赖注入

// redis.ts  export const redisProviders = {     provide: 'redis',     useFactory: async () => {     redis = new ioRedis(options);     return redis;     }, };  @Module({   providers: [redisProviders],   exports: [redisProviders], }) export class RedisModule {}  // service.ts  @Injectable() export class Service {   constructor(     @Inject('redis')     private readonly redis   ) {}    async func1() {     await this.redis.get('demo')   } }  

个人倾向于第三种,但是在实际的开发中用的是第一种。按另一个例子 logger 实例来说,logger 有 info / error 等方法来记录日志,在全局启动的时候,也需要 logger 实例,这种情况依赖注入的方式反而成为一种限制。

Node.js 后端开发经验有限,请大家指正。

大佬有話說 (3)

  • 主 資深大佬 : chogath

    现在使用的开发框架是 ts + nest.js ,分成了 lib / modules 两层

    lib 用来定义一些公共组件,如 redis 、database 、logger 等。
    modules 用来实现业务,其中 controller 、service 、dao 使用的是依赖注入。

    如果 modules 层中需要 公共组件,则通过模块引入的方式调用具体方法(如 logger.info )

  • 資深大佬 : optional

    第一种其实也是依赖注入

  • 主 資深大佬 : chogath

    @optional emm…

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具