來源: Alibaba F2E
作者:狼叔

前陣子我在知乎上回答了《2021前端會有什麼新的變化?》,單篇33.8萬的閱讀量,還是不錯的,說明大家非常關心前端的變化趨勢,這裡再與大家分享一下我對 Node.js 相關内容的看法。
Node.js 概況
整體看,Node.js 社群還是非常健康且與時俱進的。Serverless 借着雲原生這波基建更新,逐漸走入更多開發者的視野中。低運維,甚至是0運維,對前端來講是緻命誘惑的。Node.js 被吐槽最多的運維問題,在 Serverless 時代沒有了,且Serverless 容器跑的最多的示例都是 Node.js 環境。以前的說法是“所有雲廠商都愛 Node.js”,現在要改成了“所有 Serverless 廠商和開發者都愛 Node.js”了。
如果是今年選 Node.js Web 架構,大概隻有 Midway、Nest 和 next.js 了。從架構成本效益角度上看,Midway 是很好的,你想要的 IoC 與 FaaS 內建等都是非常專業的,作者能力很強,可惜曆史包袱+過度設計,擊中開發者的點總覺得不那麼準,不太了解搞那麼多 gRPC 的內建有啥用,反而在常用db,緩存,腳手架等方面沒有啥動作。Nest 作為最像 Java 全家桶的架構,其 IoC 寫法從 Angular 而來,生态和規模都已經相當大,是一個不可忽視的存在,如果能接受寫法和調試成本,是一個不錯的選擇。next.js 是一線開發者最佳視角的架構,将易用性做到了極緻,從最初 ssr 定位到現在的 jamStack 架構下的全能型架構,相當于 Umi + Midway 的超集,其功能是非常強大的,未來的野心和商業版圖是非常可觀的。從工程角度看,next.js 第一,其次是 Nest 和 LoopBack4,LoopBack4 在配套做的相當優秀,可惜用的人不多。
新的架構和具有創新點的架構也是有很多的。比如 blitzjs 和 redwoodjs ,目前還是比較新的架構,處于成熟期,從全棧或基于 Jamstack 角度看,未來還是有一定空間的。另外 Midway-hooks 和 Farrow,都有創新的。Midway-hooks 是 Midway-FaaS 基礎上加入了 React hooks,由于 FaaS 之上有路由和參數資訊,是以在前端的 Ajax 部分可以直接生成出來,再結合 React hooks 友好寫法,這是很有創新和與時俱進想法的,在同構演進裡也是具有裡程碑意義的。另一個是 Farrow,它基于 TypeScript 4.1 釋出的特性——Template Literal Types,實作了 Rocket 架構所實作的對 URL 中參數的校驗并映射到了 TypeScript 的類型中,這點還算有些新意。
狼叔是如何做的?
狼叔目前淘系前端團隊,也一直還在做和 Node.js 相關的事兒,簡單分享一下目前在做的事兒。
1、 2019年做 egg-react-ssr,還算比較成功的,大型 ssr 項目算的上是最佳實踐了。2020年底開始做 ykfe/ssr,在 egg-react-ssr 基礎上,做了插件化,支援了Vite,支援了 Vue2/Vue3/React 多種前端架構,支援 FaaS 和各種 Node.js Web 架構,說是地球上較好的 ssr 架構,也不算過分。在 ssr 世界裡,不确定的是 React server component,我還沒看明白,研究中。最有可能帶來破壞性的是 React concurrent mode,目前這方面嘗試還比較少,觀望。
早年做 ssr 做C端性能優化是被迫的,今天 ssr 幾乎已經成了前端标配,除了喚端拉新效率上提升外,來自各個大廠的關注使用者體驗更新的背景下,更是催熟了ssr 的落地環境,作為 Node.js 落地重要應用場景之一,ssr 還是有很大上升空間的,相信 ykfe/ssr 也會越來越好。
2、 iMove 面向開發者的邏輯編排工具。年初開源到現在已經超過 2.8k Star 了,可見大家對這種開發方式還是非常認可的。在 lowCode 和 noCode 背景下,iMove 也算是一個還不錯的創新方式,通過流程圖,輕按兩下編寫代碼,繼而完成複雜邏輯處理,在 Code Review 過程裡受到了 PD 和後端的極大認可。其實,iMove 更想解決的是程式設計模式上的創新,以前是按照需求直接寫代碼,而當可視化之後,先想想節點如何拆分,然後再去實作,這樣才能更好的進行設計。iMove 接下來會側重管理功能(系統設定:Runtime、私有源、節點模闆),做好節點市場,并加入 API 模式(對 Node.js 支援會更好)。
iMove 将邏輯進行結構化,和搭建天然是搭檔。未來能否改變前端的開發方式,還是值得期待的。
3、通過 ESM 改善開發者體驗。在 iMove 開發過程中,我們探索了 ESM 在浏覽器中直接營運的能力,無需本地安裝 npm 子產品。這是極其輕量的做法,結合Vite,以及很多CJS轉 ESM 服務,可以看到當下很多研發模式都會被廢棄,比如本地開發,WebIDE 等等。如果在浏覽器直接可以運作,為啥還要做那些浪費時間且毫無意義的事兒呢?
當然,在浏覽器直接可以運作是改善開發者體驗的一部分,配套設施要跟上,比如直接在浏覽器修改代碼并編譯儲存,是不是想想就很美好?如果再結合 Vercel(next.js 母公司)的做法,将 Serverless 和 CI/CD、Git hooks 進行內建,頁面托管到 Serverless 平台,無需關心運維。是的,隻要有一個浏覽器,就可以滿足前端的所有開發的時代,很快就可以實作。
4、《狼書》卷三很快就要釋出了。卷三主要是自己寫 npm,寫架構,測試,開源,微服務,性能調優,如何學習這些内容。在我看來,《狼書》三卷還是面向初級 Node.js 開發者,卷三寫的是進階篇,除了一些實踐外,又加入了開源和如何學,目的是為了授人以漁。
既然是授人以漁,狼叔也在此送出狼書10本(卷一卷二随機送出),歡迎大家關注 Alibaba F2E 微信公衆号,回複 送狼書 參與抽獎。