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