繁中

Fi在瀏覽器中將Ruby風格的SL帶入生活

在前端開發領域,JavaScript幾乎是一種不可避免的核心語言。但Basecamp(您可能知道他們的產品:Basecamp項目管理工具Hey mailbox)長期以來一直堅持一種理念:

如果你可以不使用JS,那就儘量不要使用JS。

Fizzy項目就是從這個概念中誕生的。

它不是一個框架,也不是一個UI庫,而是一個非常特殊的工具:
Fizzy允許您在Ruby風格的SL中描述前端行為,並自動將其編譯為可執行的JavaScript。

換句話說,

你編寫Ruby,它可以幫助你生成JS。瀏覽器只看到JS,但你看到Ruby的優雅。

Fizzy到底是什麼?

Fizzy是一個 Ruby-JavaScript轉換器 (more DSL轉換器)。其主要功能是:

  • 閱讀Ruby風格的聲明性前端行為代碼(DSA)
  • 將此代碼解析為抽象語法樹(AST)
  • 然後將AST編譯成可由瀏覽器執行的JavaScript
  • 最後,在瀏覽器中執行內置運行時

雖然這聽起來像魔法,但本質上是一種 前端行為編譯器.

為什麼有Fizzy?

因為Basecamp的Hotire/Turbo系統重點關注:

  • 儘可能少地寫JS
  • 更多地依賴HTML +更少的聲明性行為來完成交互
  • 使前端開發更簡單、更可維護

但是,許多前端行為仍然需要JavaScript,例如偵聽事件、更新DOM等。

由於HotWire的世界是 以紅寶石為中心 ,為什麼不讓前端行為也像Ruby一樣編寫呢?

這就是Fizzy的意義:

用Ruby表達描述瀏覽器行為並自動將其轉換為JS。

開發人員不需要編寫JS或理解複雜的回調,只需編寫Ruby風格的SL即可。

一個簡單的例子

假設我們想要在單擊一個元素時輸出一個句子。

在傳統的前端框架中,您可能會寫:

Element. addEventHandler(「單擊」,()={
 console.log(「Hello」);
});

在Fizzy背後的DSL中,您可以用Ruby風格編寫:

點擊即可
 console.log「你好」
端

Fizzy會自動將其轉換為與前一個相同的JavaScript版本。

效果是一樣的,但風格完全不同。

⚙️ How does it do it inside?

Fizzy的結構分為三個部分:

  1. 解析器
    負責分析Ruby風格的SL並生成語法樹。
  2. 編譯器
    將語法樹轉換為現代JavaScript。
  3. 運行時
    瀏覽器執行最小的JS庫來綁定事件並處理DSA行為。

不是為了誰?

  • 想要建立大型SPA的開發者
  • 嚴重依賴React/Vue的團隊
  • 想要寫很多前端業務邏輯的人

Fizzy所做的不是「增強JS生態系統」,而是「減少JS的使用」。

它的定位非常明確:

幫助Ruby生態系統減少JavaScript,而不是取代前端框架。

如何使用?

項目本身仍然處於相對低級的形式,目前的使用傾向於:

  • 訪問作為Hotire/Turbine的基礎機制
  • 在構建流中作為Ruby DSL的編譯器
  • 結合HTML中的行為聲明自動生成JS綁定

有關更多詳細信息,請查看存儲庫文檔(項目提供示例、測試代碼、運行時說明)。

總結

Fizzy是一個非常有趣、非常「Basecamp風格」的工具。

它的目標不是讓前端變得更複雜,而是讓它變得更簡單:

  • 少寫JS
  • 編寫更多Ruby風格的SL
  • 該行為由編譯器自動處理
  • 標準JavaScript仍在瀏覽器中運行

Github:https://github.com/basecamp/fizzy
管材:

返回頂端