特性:
- 基于 TypeScript 开发
- 面向切面编程(AOP)
- 提供 ORM、验证器、资源层、服务层、中间层等抽象层能力
- 基于 IOC 容器设计模式,模块高度解耦,支持依赖注入
- 高性能路由设计,性能优异(前缀树结构)
- 可通过服务提供者模式进行扩展,具有非常强大的扩展能力
性能
附上基准测试,可以看下 avg 的qps
生态
目前提供了 dubbo 解决方案,wbsocket 扩展等,计划添加监控平台等企业级解决方案
最后
框架目前已经在我们公司大流量生产环境中使用,顺便寻找感兴趣的开源维护者!!
开源不易,希望大家多多支持!
项目地址 Daze.js
鼓励开源,先点个赞。粗扫了一眼,有几点想法,求解
1)功能很强大,api设计的不是很好,还可以提升一下 2)性能提升是啥原因?中间件机制自己写的么? 3)src下的components没有在文档里看到咋玩的
有点想在新项目里面用上,唯一一点可能是es7的一些东西需要学习下。还有就是中间件用order来排序,好处就是可以不按顺序写,只按照order排序,会不会到后面不好维护呢?
@i5ting 文档还是有待加强。。。框架是按照继承的基类自动加载的,只需要在app目录下定义对应功能文件即可: https://dazejs.org/#/docs/core/autoload
@i5ting 设计 api 方面也是最花时间的一部分了。。希望大佬指教😆
@jxycbjhc 默认是按照注解顺序来的,但是可以使用 @order() 装饰器来自定义顺序级别,不过这个功能会在下个小版本发布
@i5ting 中间件机制是自己实现的,其实无路由的情况下和 koa 的性能差距不大,语言层面/中间件机制/响应机制都有一点关系,路由层面做了数据结构的优化,基于前缀树结构来提升寻址性能,不会因为路由数量增加而明显降低寻址性能
@czewail 那理论上和fastify一样,基于radix tree实现的
@i5ting 是的,加了一些功能优化,例如内置优先级算法,全匹配路由等
@czewail 已经在example-order.ts里面看到了用例以及middleware下面的测试用例,我意思是如果写的时候出现了相同order如何处理?相同odrer无所谓先后?
@jxycbjhc 用户使用中间件一般是
@use(middlewareClass), 会按照使用的顺序进行,register 方式一般在扩展模块的时候会用的比较多@czewail 懂了。补充一下和https://www.cnblogs.com/accordion/p/10569848.html 这个有点像了。