自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JS vs TS:二分法博弈

開發(fā) 前端
前后端分離的好處包括更高的開發(fā)效率、更好的團隊協(xié)作、更好的性能和可擴展性,以及更靈活的技術(shù)選型。然而,也需要注意在設(shè)計和維護 API 接口時需要考慮充分的一致性和穩(wěn)定性,以確保前后端之間的協(xié)作不受影響。

大家好,這里是大家的林語冰。“TS 涼涼”的前端都市傳說今年在前端娛樂圈收割了一大波流量和熱度,一時甚至有些許出圈。雖然但是,在“JS 教”和“TS 教”的圣戰(zhàn)中,除了狂熱的虔信徒,還有像 up 主這種佛系的“無神論者”(其實老粉都知道,語冰乃地球貓貓教的虔信徒),所以 JS 和 TS 互利共生或許可以成為“二極管思維”的第三個正確的選擇。

本期《前端翻譯計劃》共享的是一種偏向?qū)嵱弥髁x的前端技術(shù)立場,惟愿 JS 和 TS 從此握爪言和,別再搞窩里斗,愿前端生態(tài)從此世界核平,贊美女神~

DHH 最近發(fā)布的關(guān)于 Turbo 8 轉(zhuǎn)身出軌 JS,和 TS “和平分手”的博客,剎那間前端人集體破防,TS 愛好者和“類型體操受害者”開始對線,俺也不例外。夭壽啦,我甚至不知道 Turbo 8 是什么鬼物,但私以為本人也可以自由言論。就在幾周前,在下將兩個最大的項目之一遷移到了 TS,同時保留了另一個使用 JS 的項目,目前這正是本人的最佳選擇,沒有之一,成年人全都要,喵星人才選擇困難。

圖片圖片

免責(zé)聲明

本文屬于是語冰的直男翻譯了屬于是,略有刪改,僅供粉絲參考,英文原味版請傳送 JavaScript or TypeScript? How To Benefit From the Dichotomy[1]。

在解釋本人的動機之前,讓我先免責(zé)聲明 —— 我既喜歡靜態(tài)類型的嚴(yán)謹(jǐn)性,也喜歡動態(tài)類型的易用性。在花了多年時間編寫 PHP、Python、JS、TS、Go 以及一點點 Java 和 Rust 后,我學(xué)會了鑒賞這 2 種編程范式。我十分享受至死不渝地追求正確的類型,然后沉醉于它們提供的安全套,同時我完全擁抱動態(tài)類型系統(tǒng)的自由,快速地組合東東。于我而言,這只是 2 種一龍一豬的樂趣。

雖然但是,我更享受實用主義。其主要目標(biāo)旨在項目開發(fā)的各個階段快速迭代,如果說這意味著技術(shù)的改變,那就且當(dāng)做是這樣吧。

現(xiàn)在,回到我最近的經(jīng)歷。自去年 12 月以來,我一直致力于 2 個巨型前端項目:

  • 一個是經(jīng)典的帶有 API 的“網(wǎng)站”
  • 一個是非經(jīng)典的高度動態(tài)的 Kubernetes Explorer SPA(單頁應(yīng)用程序)

我不是專業(yè)的前端開發(fā)者,我構(gòu)建 UI 的策略一直是“不斷更改代碼,直到它一切順利,并且研發(fā)之旅的阻力越少越好?!北M管我尊重和熱愛靜態(tài)類型語言,但在開發(fā)的早期階段,當(dāng)代碼庫可以在一周內(nèi)多次完全重寫時,類型可能是障礙之一。這就是我使用 JS 啟動這兩個項目的原因。

9 個月轉(zhuǎn)瞬即逝,我仍然對在“網(wǎng)站”中使用 JS 心滿意足。該項目是 UI(Vue)和 API(Nuxt)組件的結(jié)晶。 UI 組件豐富但簡單 —— 大多數(shù)時候,當(dāng)我發(fā)現(xiàn) UI 回歸時,這是由于 CSS 或 HTML 的更改,而不是因為我搞亂了代碼。

API 并不那么簡單 —— 傳統(tǒng)的 BFF(backend for frontend)邏輯(比如授權(quán)/身份驗證、數(shù)據(jù)轉(zhuǎn)換等)與自定義課程管理和車隊編排邏輯交織在一起,并分布在數(shù)十個 API 處理程序中。這種架構(gòu)(或缺乏這種架構(gòu))可能會顯著減慢開發(fā)速度,但與 UI 組件不同,API 表面是一個更加穩(wěn)定的領(lǐng)域。為它編寫黑盒測試?yán)硭?dāng)然。

最初,這些測試旨在成為一個驗收套件,用于端到端檢查系統(tǒng),包括遠(yuǎn)遠(yuǎn)超出 JS API 的組件(即上游服務(wù))。但時過境遷,它們也成為驗證 JS 代碼更改的主要手段。我對這個項目的現(xiàn)狀心滿意足 —— 僅通過一組測試就實現(xiàn)了一大坨目標(biāo),并且不需要繁重的 TS 機械,我還能奢求什么呢?

圖片圖片

那么,為何我還決定將另一個項目 Kubernetes Explorer SPA 遷移到 TS 呢?

答案在于該項目提出了不同的約束和需求。與 iximiuz Labs 網(wǎng)站的主要復(fù)雜性聚焦于 API 層不同,Kubernetes Explorer 最頭大的部分是它的 UI 組件。

Explorer 的主要邏輯駐留在瀏覽器運行的代碼中,這事關(guān)重大。在沒有類型提示的情況下,處理大量屬性或構(gòu)建 Kubernetes 對象的復(fù)雜圖頭皮發(fā)麻,并且在沒有類型檢查或測試的情況下重構(gòu)這樣的代碼庫已被證明十分容易翻車。

圖片圖片

在對資源管理器的 UI 進行另一次大型更改之后(其中回歸搜索花費的時間比實際重寫的時間更長),我決定是時候優(yōu)化 DX(開發(fā)者體驗)了。本質(zhì)上,我有 2 個選擇:

  1. 開始為 UI 組件編寫測試
  2. 引入類型系統(tǒng)

測試自然棒棒噠,而且它們與我的其他項目無縫銜接,但根據(jù)以往的經(jīng)驗,對于快速變化的領(lǐng)域,測試弊大于利。維護測試套件可能會成為一種真正的負(fù)擔(dān),并且開發(fā)者往往會越來越依賴經(jīng)過高度測試的組件,當(dāng)它們不再適合 UI 時,就很難舍棄它們。

與此同時,到目前為止,我在項目中遇到的大多數(shù)回歸都是,由于缺少屬性或一種形狀的對象,意外傳遞給需要不同形狀對象的函數(shù)導(dǎo)致的 —— 編譯器的輔助通??梢员苊獯藛栴}。因此,我決定將項目遷移到 TS,并暫時將測試數(shù)量保持在最低限度。2 周后重寫了 3 次,我對自己的選擇心滿意足。

我將來會向 Kubernetes Explorer 添加更多 UI 測試嗎?大概也許可能吧。我會將網(wǎng)站遷移到 TS 嗎?大概也許可能吧。有一天我會恢復(fù)使用此 App 的 JS 嗎?答案是肯定的,前提是我發(fā)現(xiàn)它可以輔助我快速迭代。

當(dāng)然,您的里程可能會有所不同。項目的性質(zhì)差異很大,且沒有一種通用的語言或解決方案。我的個人建議是,保持務(wù)實,選擇最佳工具,避免教條主義的條條框框。

責(zé)任編輯:武曉燕 來源: 人貓神話
相關(guān)推薦

2021-12-26 00:10:39

二分法排查版本

2011-03-24 14:15:27

雙TOP二分法分頁

2018-06-15 14:26:42

2021-10-19 09:59:25

二分法排序數(shù)組

2022-04-13 07:31:20

CAP定理分布式數(shù)據(jù)庫

2017-12-19 15:54:28

工作流Git二分法

2020-12-04 10:13:09

算法二分法效率

2020-11-29 17:11:52

程序員計算機開發(fā)

2020-08-21 09:39:53

數(shù)據(jù)中心混合云技術(shù)

2009-12-03 10:26:24

PHP函數(shù)strrev

2022-04-28 20:12:44

二分法搜索算法

2009-11-30 18:46:51

PHP字符串顛倒順序

2021-03-17 08:37:23

算法性能分析遞歸算法遞歸樹

2011-03-24 13:31:35

2分法存儲過程分頁

2016-09-09 08:27:16

2021-06-02 10:23:06

索引B+樹數(shù)據(jù)

2020-08-04 16:56:50

Java方法參數(shù)

2020-05-29 11:09:40

混合云云計算技術(shù)

2022-03-29 07:52:21

運用技巧二分查找

2021-11-01 12:55:43

網(wǎng)絡(luò)
點贊
收藏

51CTO技術(shù)棧公眾號