Introduction

Packhouse Introduction

Packhouse是一個基於函數式程式設計(Functional Programming)的程式設計模型,其擁有以下特性:

開始前可以閱讀函數式編程指南了解基本觀念。

為何採用Packhouse?

1. 統一開發格式

使用Packhouse開發可以建構統一的Input/Output接口。

2. 建構微服務

Packhouse的精神是建構微服務中的微服務,建立細微可控的函式能夠快速反應需求變更,且如果保持函數式編程的核心理念,便可以在專案破碎化的情況下複製模式到各個專案中。

3. 當我們無法使用TypeScript

並不是所有的專案都能運行TypeScript,而Packhouse是原生的JavaScript,不需要經由任何編譯就能執行。

4. Cloud Function

編寫AWS Lambda時將所有的邏輯編寫在一個檔案中難以應付頻繁的需求變更,物件導向開發在minify或編譯後難以除錯,雖然我們可以藉由單元測試來避免錯誤,但上線後會發生的事永遠比開發時離奇。

無伺服器架構 - Serverless

你不需要逐步建立服務,可以直接參考API Service章節。

無伺服器架構是Packhouse絕佳的運作平台,Mess的後端就是使用PackhouseServerless Framework建構整個API Service,我們推薦下列兩種Serverless框架:

Install

$ npm i packhouse --save

運行環境

Node 8.x以上。

Packhouse並沒有強制必須於哪個環境下運作,它甚至允許於瀏覽器執行,但我們不會在乎瀏覽器兼容性。

First Function

以下是最低限度地執行程式:

const Packhouse = require('packhouse')
const packhouse = new Packhouse()
const group = {
    tools: {
        sum: {
            handler: (self, v1, v2) => self.success(v1 + v2)
        }
    }
}

packhouse.addGroup('math', () => {
    return {
        data: group
    }
})

packhouse
    .tool('math/sum')
    .promise(10, 20)
    .then(result => console.log(result)) // 30

使用案例

MESS是為了通勤族精心設計的閱讀網站,你可以在任何等待時間使用任何裝置隨時閱讀國外媒體或文章,並享受精心設計的使用者介面與翻譯、語音服務,更棒的是:完全免費!

Last updated