Daze.js 是一款 Node.js 服务端 Web 开发框架,底层基于 IOC 容器模式实现,使用装饰器进行依赖注入,结合 AOP 模式编程javascript
因为使用装饰器进行依赖注入,因此依赖 Babel 生态java
基于 IOC 容器模式设计,模块深度解耦git
支持 AOP 编程,对业务逻辑的各个部分进行隔离github
路由去中心化,经过注入实现路由定义,提高阅读质量web
内置多种组件类型,应对复杂场景编程
支持自定义提供者,具有高扩展能力json
自动加载组件自动分类注册,自动化体验极佳bash
更多...websocket
作最好的开发体验app
const { Controller, Route, Http } = require('@dazejs/framework')
@Route('/superman')
class Superman extends Controller {
@Http.Get('/create')
create() {
return this.response().Created()
}
}复制代码
上面的示例是一个控制器的代码,使用 @Route 装饰器表示这是一个路由控制器,而且路由前缀为 /superman
, 控制器继承了基础控制器 Controller
, 表示这是一个控制器模块,使用 Http.Get 装饰器开放 /superman/create
访问路径,咱们可使用 GET /superman/create
访问该资源,使用 this.response().Created()
建立状态码为 201 Created
的响应
.
├── dist // 打包目标目录
├── logs // 日志目录
├── package.json
├── public // 静态资源目录
├── src // 源码目录
│ ├── app // 应用目录
│ │ ├── controller // 控制器目录(推荐)
│ │ ├── middleware // 中间件目录(推荐)
│ │ ├── service // 服务类目录(推荐)
│ │ ├── resource // API 资源目录(推荐)
│ │ ├── component // 通用组件目录(推荐)
│ │ ├── validator // 验证器目录(推荐)
│ ├── config // 应用配置目录
│ └── index.js // 应用入口文件
└── views // 视图文件目录复制代码
src/app
下的目录结构可自行定义
路由参数框架已经经过控制器方法自动注入, 咱们能够经过定义路由参数的顺序来获取
const { Controller, Route, Http } = require('@dazejs/framework')
@Route('/superman')
class Superman extends Controller {
@Http.Get('/create/:name/:driver')
create(name, driver) {
return { name, driver }
}
}复制代码
当咱们访问 /superman/create/xiaoming/lily
, 咱们就能够经过参数直接获取 name
和 driver
控制器中,能够直接经过控制器实例获取请求实例
const { Controller, Route, Http } = require('@dazejs/framework')
@Route('/superman')
class Superman extends Controller {
@Http.Get('/create')
create() {
const name = this.request.getParam('name')
return name
}
}复制代码
在上述例子中,若是咱们访问 /superman/create?name=xxx
, 咱们就能够经过 this.request.getParam('name')
获取到 name 的值:xxx
大部分状况咱们只须要在控制器直接 return
数据便可返回结果,框架另外还支持返回资源实例,视图实例,响应实例等
这里咱们先介绍下响应实例,能够直接经过控制器方法属性 this.response(data, code, headers)
建立响应实例:
const { Controller, Route, Http } = require('@dazejs/framework')
@Route('/superman')
class Superman extends Controller {
@Http.Get('/create')
create() {
return this.response('data', 200, {
'conetent-type': 'application/json'
})
}
}复制代码
响应实例还提供了更多有用的方法,具体能够查看官方文档(文章最后会有)
Daze.js
目前刚发布 1.0 版本,功能已经不少,一篇文章介绍不完,你们能够期待后续的文章或者关注项目了解更多,还有更多的功能迭代计划
后续还有更多深刻介绍使用方法和原理的文章
这仅仅是开源的第一步
websocket
granphQL
Dubbo
DB
ORM
更多 ...
你们有更多的想法能够去 issue 提出: github.com/dazejs/daze…
官网:dazejs.org
项目地址: github.com/dazejs/daze