close

前言

nodeParty 8 月 8 號要來了。今日前端早讀課文章由螞蟻集團 @天豬授權分享。

正文從這開始~~

相識於微末

我是一個野生的程序猿,非科班出身,在非互聯網小公司待了很多年。剛開始工作的時候,還沒有前端這個崗位,不過高三的時候就接觸過網頁三劍客,一見鍾情於 HTML/CSS/JS 的『所見即所得』,懵懵懂懂間經歷過 JavaScript 停滯的那幾年,也被 GMail 引領的翻身之戰驚艷過,重新認識了前端。

JavaScript 一開始只能在瀏覽器這個容器中運行,2009 年 Ryan Dah 在研究 V8 引擎時突發奇想,JavaScript 本身就是單線程的,而且瀏覽器發起的 AJAX 請求就是非阻塞的,如果將 JavaScript 和異步 IO 以及一個簡單的 HTTP 服務器集合在一起,就會變成一個很酷的東西。於是在同年 05 月 01 日,Ryan Dah 在與 Tim Becker 的郵件討論中正式把它命名為 node,同月 27 日發布第一個版本,隨即在 11 月的 JSConf EU 上正式對外發布。

2011 年,正在沉浸於用 ExtJS 和 Flash 為電信 ERP 系統打工的我,時不時會寫一些小工具來幫自己偷懶,但一直沒找到合適的工具,苟且於 Groovy 和 Swing。有一天無意間刷 OSChina 資訊時看到 Node.js 的新聞,當時的第一反應是:『又一個 jQuery 輪子?切~~』,幸運的是基於『多少看一下反正不要錢,閒着也是閒着』的想法,點擊了進去,於是發現了一個新的世界,真香~

記得當時微信公眾平台剛出來,我的第一個練手項目就是 node-webot,也是第一次參與開源。

刀耕火種

2013 年,入職了 UC。此時的業界,已經有了前端崗位,歸屬於設計部門,也叫重構工程師。前端開始進入富應用時代,但還非常的刀耕火種。

2014 年,在 UC 遇到了 雲龍,有幸和他一起探索 UC 的前端工程化,基於 FIS 之上實現了 Scrat,那是一段很快樂的時光。FIS 的實現本身雖然比較粗糙,是基於正則表達式而不是 AST 的,但它的工程化思維卻非常的前沿。

現在很多人聊起 Node.js,第一印象可能是:『一個自不量力的想搶 Java 飯碗的語言』,但其實 命令行工具 才是 Node.js 最初落地及最大的應用場景,它給前端領域帶來了巨大的變革:Grunt 的出現讓前端有了自己的構建工具,Babel 的出現讓我們停滯已久的標準化重煥生機,Webpack 的出現讓前端工程化有了基石,前端基建進入新石器時代。

參考閱讀:《前端工具鏈十年盤點》

全棧工程師

2014 年,隨着 UC 被阿里收購,我被動的完成了畢業時的目標之一。同年 6 月 21 日的 JSConf CN 大會上,赫門 分享了 《淘寶前後端分離實踐》,吹響了國內前端 前後端分層 的號角,BFF 的基石也正是 Node.js 這一武器。

2015 年 11 月 13 日,在 蘇千 的號召下,成立了 Node.js 虛擬工作組,聚集了來自螞蟻、淘寶、ICBC、UC 等等 BU 的接口人進行共建,我作為 UC 的代表來到了杭州,核心成員閉關一周,產出了 EggJS,寓意是希望幫助各團隊架構師孕育出適合團隊業務場景的上層框架。隨着它的完善,Node.js 生態有了三駕馬車( EggJS 框架、TNPM 包管理、AliNode 性能分析)的護航。

Node.js 在服務端的起點,是 BFF 聚合層。BFF 聚合層一直都存在,它不局限於語言,只不過之前由 Java 團隊來負責。隨着業務複雜度和專業度提升的要求,由前端團隊來接管這一層,更有利於服務自治和高效協作,於是很多前端團隊選擇了 Node.js 來承載它。

在移動互聯網的浪巔下,前端肆意地探索着自己的邊界,從 PC 到 H5,從 WebView 到 APP,從 Browser 到 Server,這是屬於前端的大航海時代,一時間人人都是全棧工程師。

這是一個全棧爆發的時代,這是一個活力四射的時代。我們衝鋒陷陣有了不少突破,但我們也留下了很多歷史債。

靜水深流

2019 年初,我加入了螞蟻體驗技術部,來到了那個 EggJS、CNPM 誕生的地方,成為了一名前端基礎技術人,專注於 Node.js 基礎設施的建設。

真正投入到基礎設施後,你會發現後端的領域非常廣闊,要讓一個新生的基礎設施完善以及得到認可,需要一代代人的努力和沉澱。

我們實現了各種後端服務 SDK,因為在那個年代跨語言支持友好性不像今天這樣是一個共識。

我們實現了 EggJS 框架、TNPM 包管理、AliNode 性能分析 三駕馬車來為業務開發護航。

我們實現了自己的研發平台,收斂研發模式,對接下游 PaaS 等基礎設施。

我們在語雀、雲鳳蝶、雨燕等場景都大規模的深度使用了 Node.js。

近年來,我們進入了平台治理期,我們變得更耐心和更克制,圍繞着前端核心場景去深入,不會把 Node.js 作為錘子去找釘子。

我們不再追求人人都是全棧工程師,前端領域目前已經足夠廣大,術業有專攻,我們的目標是把部分前端培養成全棧,成為前端新基建的護航者,讓一線前端可以無感的沒有額外負擔的享受到這些能力,從而給業務帶來創新。

我們不再追求全民 BFF 化,而是會幫助業務一起分析架構選型,協建上層業務平台的方式來提升效能和 ROI。我們重新審視原來的基礎設施,結合最新的前端實踐進行更極致的翻新,如過去一年在 CNPM Rapid 等方面的實踐。

"Any application that can be written in JavaScript, will eventually be written in JavaScript." -- Jeff Atwood(任何可以用 JavaScript 來寫的應用,最終都將用 JavaScript 來寫。)

這段話曾經在前端圈很流行,我個人覺得它既對,也不對。在那個時代,Node.js 這個少年處於野蠻生長時代,年輕人總需要去證明一點什麼,證明這世界上沒有什麼是不可能的,一切皆有可能。但成長後的少年,已經不需要去為了證明什麼而去做些什麼,而是需要聚焦回核心航道上的事,不用分心在可以做但沒必要做的事上。

"The strength of JavaScript is that you can do anything. The weakness is that you will." -- Reg Braithwaite (JavaScript 的優點是可以寫任何東西,缺點是你真的會用它去寫這些東西。)

這句話,我認為是對上一段話的回應,或者說下聯,我們需要正確且理智的看待手中的武器,並使用在合適的場景。

Node Party

不知不覺,Node.js 已經陪伴了我十年,在工作中一直在深度實踐,在社區也一直在做 Node.js 的科普工作。但我一直不覺得自己是 Node.js 布道師,我只是一個記錄者,我也不覺得 Node.js 是萬能的,不覺得它能拳打腳踢 Java 等語言,每個團隊的起點、技術背景、基礎設施都不一樣,不能一概而論。

我堅信它對前端領域的價值,當下是一個不可或缺的基礎設施,或許未來前端的變革使得一切工程問題從根本上得到解決,但不管怎樣,我只是希望當下能認真記錄自己以及同行者們在這個領域的所見所想,與正在經歷前端工業化演進並被此過程困擾的同學交流心得,讓大家有所參考從而邁出自己的路。

經歷過前端大航海時代的同學,一定還記得當年 JSConf CN、Node Party、前端圈等各種大會,那真是一個令人懷念的純真的技術年代啊。近幾年來,各種大會少了不少,也有人會吐槽沒啥乾貨,其實不必糾結,因為前端已經到了一個平台期了,它涉獵的範圍太廣了,自然會顯得有點平淡,其實不盡然,我們一直都在前行着。

去年底 蘇千 找我說,辦個 Node Party 吧,我一開始有點疑慮,因為我們正在做的很多都是內部的治理工作,社區的同學不一定能理解和有所收穫。蘇千說:『沒關係的,我們既然一直在這條路上走着,我們有義務跟社區分享下我們的所思所得,讓大家知道,還有這麼一群人一直在前行着』。

因此,今天誠邀大家參與螞蟻集團舉辦的 Node Party 2022.08.08 線上直播。也許我們還沒完全準備好,還在持續的完善中,但我們希望能讓社區的同學知道,我們一直都在前行,等你~

B 站預約傳送門:https://live.bilibili.com/21726701,敬請關注。

關於本文作者:@天豬原文:https://zhuanlan.zhihu.com/p/546175922

關於【專訪】相關推薦閱讀。歡迎讀者自薦投稿,前端早讀課等你

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()