Ruby on Rails的創造者DHH(David Heinemeier Hansson),在部落格提到自己從來都不是TypeScript的粉絲,而且認為該語言是他程式開發體驗的阻礙,因此宣布從框架Turbo 8中刪除TypeScript。而此舉引來社群開發者不滿,並表示DHH決定過於倉促,可能導致現有生態系被破壞。

Turbo本身雖然不是一個熱門框架,但卻是Hotwire設計框架背後重要的元件,Hotwire的特色是能夠大幅減少自定義JavaScript程式碼的使用,以HTML-Over-The-Wire策略來加速網頁渲染。HTML-Over-The-Wire從字面意思解讀是透過電線傳送HTML,當應用程式需要更新或是發生變化時,由伺服器直接傳送HTML片段給客戶端,而非傳送JSON資料或是JavaScript程式碼,由客戶端解析並渲染。

傳統的前端框架當用戶與應用程式產生互動時,伺服器通常只會傳送資料,然後才由客戶端解析並渲染新的使用者介面,但是在HTML-Over-The-Wire策略中,伺服器則會直接傳送完整或是部分的HTML片段,客戶端只要將這些片段插入當前頁面即可,該方法的優點是能夠減少客戶端處理JavaScript的複雜性,因為絕大多數的邏輯和渲染會在伺服器端完成。

這種策略適合用於想要減少前端複雜性,但又想提高效能的時候,尤其是開發者想要保有伺服器端渲染的好處,但又不想放棄客戶端互動性的用例。

DHH宣布把Turbo中的TypeScript刪除,這代表在接下來的Turbo 8中,不會支援與使用TypeScript,在Turbo框架中,官方便不再整合和考慮TypeScript。因此開發者在使用Turbo 8的時候,可能無法使用TypeScript特定功能。

在部落格中,DHH提到自己喜歡JavaScript,甚至可以說是繼Ruby第二喜歡的語言,在ES6之後,JavaScript加入了正式類別語法以及各種功能後,DHH認為用JavaScript編寫程式碼變成一種樂趣。

許多貢獻者在移除TypeScript的GitHub拉取請求頁面留下意見,有開發者提到,Turbo從TypeScript轉換回JavaScript,代表Hotwire生態系中許多套件都會故障,而且與此同時,所有開放拉取請求都已經過時,即便當中有一些良好的貢獻,而且IDE也將無法像過去一樣提供自動完成功能。甚至有不少開發者,認為這樣的改變是一種退步。

由於TypeScript是一種強類型語言,變數、參數和物件屬性都有明確的類型,而明確類型使IDE可以準確知道變數或物件的屬性與方法,進而更有能力提供更具上下文的自動完成和程式碼提示。

DHH也在討論串下回應,表示雖然使用TypeScript對一些人提供優勢,但是他認為,不使用TypeScript也帶來一些好處,程式碼更好閱讀,而且也不需要為了滿足TypeScript編譯器進行額外的類型操作。37signals所有客戶端程式碼和內部函式庫都以純JavaScript編寫,而這項Turbo變更,將會使技術堆疊更一致,DHH也強調,自己的立場不會因為開發者的討論而改變。

雖然Turbo 8放棄支援TypeScript,但這不代表客戶端程式碼不能使用TypeScript或是其他TypeScript函式庫,因為JavaScript和TypeScript間完全相容,開發者仍然可以編寫和執行TypeScript程式碼,因為TypeScript最終會被編譯成JavaScript。DHH強調,Turbo 8不再支援TypeScript,並不會阻礙開發者使用TypeScript。

熱門新聞

Advertisement