站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!

前端需要掌握多少Node.js?

01J5CG8QJYWM82K1JE6SESQAEB.png

昨天下午,來了個剛畢業的學弟,很認真地跑過來問我:「哥,我看網上好多人都說前端要學Node,我到底要學到什麼程度啊?是不是得把Express、Koa那些都搞會了才能找到好工作?」

看着他一臉焦慮的樣子,我想起了幾年前的自己。

那時候Next.js剛火起來,前端的邊界一下子就模糊了,我也很慌,覺得再不學後端就要被淘汰了。於是跑去啃Express的源碼,研究Koa的中間件,折騰了半天,結果發現日常工作裡,好像也用不太上,慢慢就忘了。

現在幹了八年,也帶了個小團隊,回頭再看這個問題,我有了點不一樣的想法。

我首先跟我們組那個弟弟說的就是,你得先搞明白,我們前端學Node,目的不是為了去搶後端同學的飯碗。

我們學它,是因為我們整個前端的體系——你用的Webpack, Vite, ESLint, Babel, pnpm——全都是建立在Node.js這個地基上的。你不懂地基,樓蓋高了心裡就會發虛。

所以我覺得,有些東西是繞不開的,是你作為一個現代前端工程師,必須掌握的基本功。

比如package.json你肯定得門兒清吧?dependenciesdevDependencies搞混了,那是要出生產事故的。還有scripts,你怎麼跑項目,怎麼打包,不都在那裡面嗎?這都是基礎中的基礎。

還有模塊化,CommonJS和ESM那點破事兒,雖然很煩,但你必須得懂。不然哪天Vite或者Webpack報個require is not defined的詭異錯誤,你都不知道從哪下手查。path模塊也一樣,我CR代碼的時候,現在還經常看到有同學在配置文件裡手動拼接路徑字符串,比如'../' + '/src',我一看就頭大,跟他說一定要用path.resolve或者path.join,不然哪天代碼跑到Windows上就掛了。

把這些,再加上fs讀寫個文件(比如寫個小腳本自動生成些模板代碼)、process.env搞明白環境變量,我覺得你作為一個前端,就已經及格了,日常開發絕對夠用。

但想拿高薪,想成為團隊裡能扛事兒的高級工程師,那肯定不夠。

高級體現在哪?體現在你能解決一些「問題」。

最常見的就是跨域。本地開發localhost:5173請求測試環境的API,肯定跨域啊。這時候你總不能天天在群裡@後端,讓他給你加白名單吧?自己用Vite的proxy,或者順手用Express快速起個代理服務,幾行代碼就搞定了。這事兒,就得會。

還有就是現在流行的Next.js, Nuxt這些元框架。你說它是前端還是後端?它都有。你在getServerSideProps或者一個server route裡寫的代碼,那就是實打實地跑在Node環境裡的。你不懂Node,那你怎麼調試它,怎麼理解它的生命週期和執行環境?所以你看,技術的發展,是逼著你往前走的。

我們團隊之前為了提效,我還讓組裡的同學寫過一些簡單的CLI工具,比如一個自動根據API的Swagger文檔,生成TypeScript類型定義的小腳本。這就是典型的進階能力了,能讓你從一個業務開發者,開始具備工具開發者的思維。

再往上,就是專家或者架構師的層面了。比如我們常說的BFF(服務於前端的後端),你需要自己用Node.js去搭建一個中間層,去做接口的聚合、裁剪,甚至需要連資料庫做一些操作。到了這個層面,你其實已經是一個前端驅動的全栈工程師了,你的能力邊界已經非常寬了。但這對於大多數前端同學來說,可以作為長遠目標,不必強求。

聊了這麼多,其實我想說的核心就一個:不要為了學Node.js而學Node.js。

你的目的,不是為了在簡歷上多寫一行熟悉Node.js全家桶,而是為了解決一個更完整的問題

是為了能獨立搞定一個項目的工程化配置,是為了能解決團隊的開發提效問題,是為了能駕馭一個全栈框架。

所以,別焦慮了。

先把手頭那些package.jsonvite.config.js裡的東西搞搞明白。然後,當你遇到下個問題,發現它需要一點Node的知識才能解決時,再去學。

解決問題,永遠是最好的老師。

大概就是這樣吧,一點不成熟的個人看法,希望能幫到你。


原文出處:https://juejin.cn/post/7542379658521690139


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!