let-us-koa - 快速玩轉 koa 的最小化 web 應用 "容器"(腳手架)

Github Repo: https://github.com/qddegtya/let-us-koahtml

let-us-koa

Just another koa-seed-project.git

Preview

let-us-koa

Why

搭建一個koa的腳手架並不困難,但就如其餘"體力活"同樣,github

  • 咱們並不想重複勞動web

  • 其餘腳手架生成出來的項目目錄結構可能並非咱們想要的npm

  • 一些基於Express和Koa類型的框架型項目集成了ORM等重量級組件,固然,這自己無可厚非,你們的定位不同json

What we need

我但願只經過一個最小化的"容器"去啓動一個應用,它大概只須要如下幾個功能就能夠了,重要的是,它的目錄結構應該是清晰的,可維護的:api

核心思想:模塊即同名文件app

  • 自動根據模塊級目錄生成路由框架

  • 模塊可插拔koa

  • 支持路由級中間件自動加載

  • 腳手架只須要支持router,render,debug就能夠了

因此,let-us-koa的原理很是簡單,若是你想快速跑起來一個koa應用,你能夠這麼作:

Play

Install

$ git clone https://github.com/qddegtya/let-us-koa
$ cd let-us-koa
$ npm install

Run!

$ npm run start

新增一個模塊

在modules下面新建目錄便可,目錄名稱就是模塊加載器自動prefix的一級路由名稱,好比咱們這裏的api和home

分別對應

/api
/home

模塊必須包含的文件

app.conf.json // 模塊配置文件
controllers.js // 控制器

app.conf.json

{
  "routes": [
    // 路由規則
    // [HTTP方法]#[/your route]#[controller]
    "GET#/version#getApiVersion"
  ],
  "active": true // 模塊是否激活
}

模塊下的controllers

'use strict'

// 只須要導出對應的方法便可
module.exports = {
  getApiVersion: function* () {
    this.body = {
      'version': 'v1'
    }
  }
}

全局配置

{
  // 子模塊目錄
  "modules": "modules",

  // 上傳目錄
  "upLoadDir": "public/uploads",

  // 自定義中間件存放目錄
  "middlewareDir": "middlewares",

  // 子模塊渲染服務的view path
  "subModuleViewPathName": "views",

  // 全局渲染選項
  "renderSettings": {
    "autoescape": true,
    "cache": "memory",
    "ext": "html"
  }
}

中間件

應用級中間件

推薦把加載邏輯寫進middleware.js裏

路由級中間件

let-us-koa自動爲你處理了這塊中間件的加載邏輯

你能夠參考下面的配置:

{
  "routes": [
    "time|log|GET#/version#getApiVersion"
  ],
  "active": true
}

它表示,該路由將通過time,log中間件,對應的源文件就是middlewares下的同名文件,固然,你能夠在全局的app.conf.g.json中更改這個配置

關於渲染方法的掛載

若是你的某個子模塊須要掛載渲染方法,那你必須顯式地在子模塊app.conf.json中聲明needRender選項

{
  "routes": [
    "GET#/#getHomePage"
  ],
  "active": true,
  "needRender": true
}

這樣,let-us-koa就會自動爲你掛載這個render方法。

idea: 好比一些API服務模塊,可能不須要渲染服務,那就沒有必要構建render

靜態資源託管

默認託管在種子項目根目錄下的public

?栗子

一個"儘可能最小化"的基於koa的web server容器,其實就能夠跑起來一些小應用,這些應用也許不須要持久化存儲等複雜功能的支持,好比它只須要一個簡單的渲染服務?

瞧,咱們能夠利用它快速搭建一個內部的研發平臺導航站點,It's Cool.

portal

同時,但願給正在學習koa的你提供一個這樣的腳手架,讓你能夠快速起手。

So, Let us Koa!

Thanks

Koa.js

相關文章
相關標籤/搜索