首頁 > web前端 > js教程 > 管管屎

管管屎

Susan Sarandon
發布: 2024-12-08 01:40:11
原創
644 人瀏覽過

Pipe the shit

我對這篇文章有很多想法,但我不知道從哪裡開始。如果您有興趣使程式碼更具可讀性並使用 Tree Shaking,您絕對應該查看這篇文章。

如果您曾經使用 JavaScript 進行開發,您可能遇到過這種類型的程式碼。

const someInstance = new Class();
someInstance.do('jump').some().thing('dance').and().read();
登入後複製

我喜歡這種風格,因為它很容易閱讀,你可以看到其中的聯繫。另外,您不必將資料從一個函數移動到另一個函數,因為它全部保存在實例中。

除了這僅在函數不非同步時才有效這一事實之外,還有另一個問題。如果您不使用內容,那麼對內容進行 Tree shake 並不容易。如果你在客戶端使用它,你必須移動整個函式庫以及所有連接的函數,這是一個巨大的開銷。

那麼,我們如何保持內容的可讀性,使用非同步函數並讓 Vite 和 co.樹搖所有未使用的程式碼?

答案就在標題中:「管道」。

從功能的角度來看,實作管道非常簡單。然而,這些類型確實帶來了挑戰。我已將所有內容整合到一個庫中並將其發佈到 npm 上。管道並組合。

const inc = (by: number) => (x: number) => x + by;
const dec = (by: number) => (x: number) => x - by;
const multiplyBy = (by: number) => (x: number) => x * by;
const divideBy = (by: number) => (x: number) => x / by;
const toStr = () => (x: number) => x.toString();

// prepare the pipeline
const pipeline = pipe(inc(2), multiplyBy(7), dec(7), divideBy(3), toStr())

// Executing the pipeline
pipeline(7)
登入後複製

一個優點是它不會綁定到任何對象,因此只要輸入和輸出與之前和之後的函數匹配即可使用任何函數。

我給的範例非常簡單,但至少您可以透過管道傳輸所有內容。您將擁有與連結和類別相同的選項。泛型函數可能有點棘手,但有一個解決方案。我將在另一篇文章中更詳細地介紹這一點。

以上是管管屎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板