Nana Plays Minesweeper

    packhouse

    2.0.3 • Public • Published

    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

    Install

    npm i packhouse

    DownloadsWeekly Downloads

    7

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    333 kB

    Total Files

    39

    Last publish

    Collaborators

    • khczhihao