Skip to content

Packhouse is a function wrapper based on the concept of functional programming

License

Notifications You must be signed in to change notification settings

KHC-ZhiHao/Packhouse

Repository files navigation

Packhouse

Functional Programming Design Pattern

Coverage Status Standard Code Style Language grade: JavaScript


Summary

完整教學文件

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

  • 追蹤呼叫上下文
  • 真正的型態檢查
  • 管理與分類函式
  • 美麗的寫作規範
  • 建構後端服務的能力

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


為何採用Packhouse?

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

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

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

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


無伺服器架構 - Serverless

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

無伺服器架構是Packhouse絕佳的運作平台:

Serverless Framework

AWS Serverless Application


安裝

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')
    .action(10, 20, (error, result) => {
        console.log(result) // 30
    })

使用案例

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


Versions

1.x與2.x的版本差異非常大,如果使用1.x請參照下列文件:

Guide

API Document

About

Packhouse is a function wrapper based on the concept of functional programming

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published