上午九點,鏈藝坊的開放式辦公區已經坐滿了人。
林晨盯著螢幕上開啟的程式碼倉庫,眉頭不自覺地皺了起來。昨天下午專案會結束後,Tech Lead 陳峰已經把專案許可權和任務詳情發給了他。這是一個 NFT 拍賣平臺的前端模組,需要他負責使用者資產展示、出價互動和交易狀態即時更新的部分。
技術棧清清楚楚地寫在專案文件裡:React 18 + TypeScript + Vite,與後端智慧合約互動使用 ethers.js,部分複雜狀態管理用 Zustand。每一個詞他都認識,但組合在一起,尤其是要在三天內做出“可演示版本”,壓力像潮水般湧來。
他上一次正經寫前端程式碼,還是五年前用 jQuery 和 Bootstrap 做後臺管理系統。React 他聽說過,知道是 Facebook 搞的框架,但從來沒碰過。TypeScript 更陌生,只知道是 JavaScript 加了型別系統。至於 Vite、Zustand 這些工具,名字都新鮮。
“晨哥,環境配好了嗎”?旁邊工位探過來一張年輕的臉,是昨天一起吃午飯的前端同事阿杰,戴著黑框眼鏡,頭髮染了一撮灰藍色。
“差不多了,正在看專案結構”。林晨儘量讓自己的聲音聽起來平靜。
“那就好。這個專案其實不難,核心邏輯都在合約那邊,我們前端主要是把資料展示好,互動做流暢”。阿杰說著,指了指自己螢幕,“我負責拍賣列表和搜尋,咱們模組挨著,有問題隨時問我”。
“謝謝”。林晨點點頭,心裡稍微鬆了點。至少同事看起來還算友善。
第一步:初識程式碼牆
他深吸一口氣,點開專案 READ,從頭開始看。先按照文件把依賴裝好,然後啟動開發伺服器。終端裡滾過一行行安裝日誌,最後顯示“Local: Auction Platfor的標題。
“第一步總算沒卡住”。林晨心裡默唸,開始按照任務描述,找到對應的元件目錄。第一個要改的檔案是 src/ponents/AssetCard.tsx。點開,滿眼都是陌生的語法。
林晨盯著程式碼看了足足十分鐘。interface、React.FC、useState、useCallback、use、BigNuer…… 這些概念像一堵牆橫在面前。他能大概猜出一些——useState 應該是管理狀態的,useCallback 和 use 跟效能最佳化有關,interface 定義型別。但具體怎麼用,為什麼要這麼用,腦子裡一片空白。
更麻煩的是,這程式碼和他習慣的後端 Java/Python 寫法完全不同。函式式元件、Hooks、JSX 語法…… 每一樣都需要重新理解。
“晨哥,卡住了”?阿杰又探過頭來,看到林晨螢幕上的程式碼,“哦,AssetCard 啊,這個元件其實挺典型的。你要改的是出價按鈕那塊的樣式,產品說現在的按鈕不夠醒目,要加個漸變背景和 hover 效果”。
林晨苦笑:“樣式先放放,我連這元件怎麼工作的都還沒完全看懂”。
阿杰愣了一下,隨即露出理解的表情:“哦對,你之前主要做後端是吧?React 這套確實需要適應一下。要不你先看看官方文件?React 和 TypeScript 的官網教程都挺不錯的”。
“嗯,正在看”。林晨已經打開了 React 官網,同時另一個標籤頁是 TypeScript Handbook。
除錯:新手的挫敗感
時間一分一秒過去。上午十點半,林晨勉強理解了函式式元件的基本概念,嘗試著修改了一點樣式程式碼。儲存後,瀏覽器熱更新,按鈕確實變了顏色。但當他嘗試新增一個簡單的功能——在出價時顯示載入狀態——時,問題來了。
按照他的理解,應該在 handleBid 函數里設定某個狀態,然後在按鈕上根據這個狀態顯示“出價中……”。他模仿著現有程式碼,加了個 const 【isSubtting, setIsSubtting】 = useState(false),然後在按鈕的 disabled 屬性裡用這個狀態。
儲存,編譯報錯:Type boolean is not assignable to type string | undefined.
林晨盯著錯誤資訊,不明所以。他檢查程式碼,按鈕的 disabled 屬性確實是布林值啊。
“阿杰,能幫我看一眼嗎”?他不得不求助。
阿杰湊過來,掃了兩眼:“哦,這裡。你看按鈕的 disabled 屬性型別定義,可能是從某個 UI 庫來的,它接受的是 string 或者 undefined,不是 boolean。你得改成 disabled={isSubtting ? true : undefined}”。
林晨恍然,同時又感到一陣無力。這種細節,沒有經驗根本想不到。改好,編譯透過。但點選按鈕測試時,控制檯又報錯:Uncaught TypeError: onBidClick is not a function。
“這又是為什麼”?林晨感覺自己像個剛學程式設計的新手。
阿杰耐心解釋:“onBidClick 是從父元件傳下來的回撥函式,但你在 AssetCard 裡測試的時候,父元件沒傳這個 prop,所以是 undefined。你得在父元件裡模擬一個函式傳進來,或者先判斷是否存在”。
林晨按照提示修改,終於讓按鈕能正常顯示載入狀態了。就這麼一個簡單的功能,花了他整整一個小時。
戰挑的範規與度進
。本版示演可付要就五週而,分部小一的件元個一了懂弄強勉只,午上個一。睛眼的酸發了,面頁件文掉關他。話上不全完晨林。”knag“、”野打“、”文符“——濺飛語,戲遊的玩晚昨聊在事同輕年個幾。麼什吃午中著論討,飯吃去起人有始開裡區公辦。十四點一十經已,間時看頭抬
。夠定一不都週三他給,天三說別,度進種這
……式樣寫 SSC dniwliaT、態狀端務服理管 yreuQ tcaeR、由路做 retuoR tcaeR:式模和庫的過接沒全完他不了用案專——沉越心看越。構架端前個整解理圖試,去過看個個一,案檔件元他其的案專啟開他。幕螢開離沒睛眼,治明三的乾著啃晨林。半一了空區公辦,了吃去出伴結事同個幾他其和杰阿。碼式程看續繼邊吃邊位工到回,治明三個了買便隨店利便下樓在,口胃麼什沒他,時休午
?”啊息休沒你,哥晨“:訝驚些有,位工在還晨林到看杰阿。來回續陸們事同,半點一午下
。說晨林。”悉悉間時抓,嗯“
。置配 tniLSE 的案專合符保確,式格碼式程了查檢意特還他前提。做步步一,端遠到送推、提、改修、支分立建、碼式程新最取拉從,程流的件文司公照按,怠懈敢不晨林。流作工 tig 悉他讓是算,務任小個是這。了復修題問式樣個幾的件元 draCtessA 把,RP 的單簡個一提前點四午下他讓,他了 @ 裡群隊團在峰陳。更作工的午下
:了論評面下 RP 在峰陳,後鐘分十。了過關這至為以,氣口了鬆他。功立建 RP,十五點三








