Git Product home page Git Product logo

daze's Introduction

GitHub issues npm npm actions codecov Codacy Badge GitHub license

Daze.js

Node.js 的 Web 框架

中文 | English

访问 https://dazejs.org/ 了解更多

介绍

Daze.js 是一款高性能、高扩展性、功能强大的 Node.js 服务端 Web 开发框架。

特性

  • 基于 TypeScript 开发
  • 面向切面编程(AOP)
  • 提供 ORM、验证器、资源层、服务层、中间层等抽象层能力
  • 基于 IOC 容器设计模式,模块高度解耦,支持依赖注入
  • 高性能路由设计,性能优异
  • 可通过服务提供者模式进行扩展,具有非常强大的扩展能力

快速开始

创建工程
$ npm init @dazejs/app project_name
$ cd project_name
$ npm run dev

访问 http://localhost:8080 进行预览

文档 & 社区

贡献者

请告诉我们可以为你做点什么,在此之前,首先查看 Issues 来获取 BUG 报告或建议。

想成为一个贡献者, 请参考我们的贡献指南

感谢所有为这个项目做出贡献的人!

基准测试

基准测试对比了一些其他的框架,主要通过没有路由与定义1000个路由的情况下进行比较,详见benchmarks

License

Daze.js is MIT licensed

daze's People

Contributors

czewail avatar dependabot-preview[bot] avatar dependabot[bot] avatar icemimosa avatar pwq309 avatar yinggaozhen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

daze's Issues

3.0 Draft

3.0 版本 Draft

  • 统一规范化装饰器行为
  • 重构 ORM 模块
  • 模块引入装饰器分类、基类增强的模式
  • 更多细节优化

详细更改:

  1. 添加 @autowired 装饰器:根据属性名自动注入,@inject() 的简化版,功能单一、语义更加清晰
  2. 移除自动绑定的类别前缀,这会使所有模块命名不允许重复, 例如 @resource('user')@service('user') 无法同时使用,推荐使用 @service('userService') 来定义,这样可以更方便的使用 @autowired 进行注入
  3. 对所有基类进行了重新命名 Controller => BaseController, Service => BaseService 等等, 使语义更加清晰,同时不会和装饰器命名产生冲突
  4. 添加 @controller() 装饰器,之前 @route() 装饰器作为 @controller() 装饰器的别名
  5. @singleton() , @multiton() , @ignore()@injectable() 使用方式更改为 @singleton 类似直接使用,无需执行, 提升简洁度
  6. 添加 @imports() 装饰器,与 @depends() 对应, @depends() 会提前加载依赖的提供者, 而@imports() 会在当前提供者加载后加载, 并且移除了 @depend() 遗留版本的装饰的
  7. 类型 TNext 重命名为 Next
  8. 添加 Application.create(...Providers) 静态方法,可以通过该方法直接创建应用实例,并且可以传入 Provider 作为应用依赖的提供者
  9. 添加 Application.createWithPath(path, ...Providers) 静态方法, 可以自定义应用目录
  10. 添加 @provider() 装饰器,整合了 @depends() ,@autoScan(), @imports(), 如果需要同时实现3种功能,使用 @provider() 更为便捷
  11. @config() 装饰器重命名为 @conf(), 防止与 Config 类型冲突

4.0 Road Map

4.0主要重构了 ResourceValidator, 并提供了全新的 API, 对比之前,使用更加灵活、API 更加统一:

Resource:

  • 移除了3.x的使用方式
  • 增加 @useItemResource@useCollectionResource 装饰器,可以将资源自动应用与方法的响应对象上
  • 强化基类功能,增加 collectionitem 实例方法和对应的静态方法,可直接生成资源实例
  • 强化嵌套能力,嵌套属性可直接使用资源实例赋值,框架将自动处理

Validator:

  • 移除了3.x的使用方式
  • 增加 @useValidate 装饰器,可直接作用于请求对象,与 request.validate(Validator) 对等
  • 强化基类功能,增加 checkmake 等实例方法和对应的静态方法,可根据情况灵活使用

其他:

  • 优化异常处理逻辑,现在可以正确的根据请求类型,响应正确的错误信息类型
  • 优化 @useMiddleware 装饰器,现在可以使用指定参数进行中间件实例构造了

关于注入装饰器的设计

@IceMimosa

你觉得使用不同的装饰器 @useService, @useResource 区分注入还是 统一 @inejct 注入比较好

第一种:
各个模块使用 @service(name) @reource(name) 命名的时候不会冲突

第二种:
存在命名唯一性,例如 service 模块和 resource 模块不能重名

Daze.js cook book

features suggest here

大家有什么功能建议可以在这里提出

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.