使用 Daze.js 開發 Node 應用 - 介紹篇

Daze.js 是一款 Node.js 服務端 Web 開發框架,底層基於 IOC 容器模式實現,使用裝飾器進行依賴注入,結合 AOP 模式編程javascript

因爲使用裝飾器進行依賴注入,因此依賴 Babel 生態java

特性

  • 基於 IOC 容器模式設計,模塊深度解耦git

  • 支持 AOP 編程,對業務邏輯的各個部分進行隔離github

  • 路由去中心化,經過注入實現路由定義,提高閱讀質量web

  • 內置多種組件類型,應對複雜場景編程

  • 支持自定義提供者,具有高擴展能力json

  • 自動加載組件自動分類註冊,自動化體驗極佳bash

  • 更多...websocket

目標

作最好的開發體驗app

Example

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, 咱們就能夠經過參數直接獲取 namedriver

請求

控制器中,能夠直接經過控制器實例獲取請求實例

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

相關文章
相關標籤/搜索