Skip to main content
Module

x/dinar/docs/initialize.md

deno web framewrok maybe :<
Latest
File

Initialize

实现注入 Service

  1. 根据文件地址搜索所有带有 service 装饰器的类
  2. 创建一个优先权队列
  3. 根据实例化 service 参数的个数推入优先队列
  4. 判断是否有循环引用 –> throw error
  5. 实例化各个 service

实现注入 Entity/Collection

Entity 装饰的类是数据库到 Deno 的映射 实例化的时候会为这个类注入 sql 查询的语句 无依赖 优先实例化

实现注入 Controller

controller 是对处理方法和路由的映射

  1. 将 controller 下的方法收集起来
  2. 收集完毕以后实例化 controller 并注入依赖
  3. 将各个方法和对应的路由对应

Session Cookie redirect 以及 sendfile

调用 session this.session this.cookie 全部注入到原型链中 –> ts 支持不友好 DefineProperties 影响 v8 性能优化

过滤器 拦截器 守卫 管道 中间件

http request –> nginx –> convernt to req object –> middleware –> filter –> guard –> router handle –> interceptor –> http response

Body Session Cookir Query

数据收集 –> 依赖注入

数据收集 –> 依据给定的目录导入 services、controllers、entities.. 默认从整个目录下寻找

静态导入的时候会调用装饰器,此刻进行数据收集 包括

  1. database model 相关信息 放入 ioc 容器中等待实例
  2. services 推入 ioc 容器中
  3. controller 、methods 信息 、method 参数信息

实例化顺序 model 优先级 service controller 并且绑定 methods 运行时注入@Body()等