Skip to content
Documentation
My Work
為何選擇 Next.js

為何選擇 Next.js

我的背景

我原本是一個搞數據的人,工作一陣子之後,因為希望我做的事情可以是公司重要的核心(做的事是對公司有影響的),所以決定轉職成為軟體工程師。而選擇前端工程師最大的原因就是,這個角色剛好是產品開發團隊中最中間的角色。下圖是我轉職前的想像…(這邊我們先不考慮商業分析師、資料科學家 ⇒ 在台灣我覺得這麼健全的團隊不多)。所以我認為前端工程師是最可以了解整個產品的全貌的人,我覺得這會是一個非常有價值的事。

但必須老實說,轉職到一半,我認真覺得做前端畫面超級無聊的,特別是 CSS 的部分。我感覺我簡直就像是一隻調參猴(指只會不斷調整參數訓練模型的人),不斷調整 CSS ,檢查畫面,再調整 CSS,再檢查畫面,無限循環。這裡無意冒犯任何喜歡 CSS 的人啊~我可是覺得能寫好 CSS 是一個很棒的專業。尤其是當我看到一些網路上的大神在寫 CSS 時,我是真心佩服的五體投地!!附上一個我很喜歡的影片

但 Next.js 的出現讓我重新喜歡上網站開發。所以我寫下這篇文章,除了單純為了滿足我的分享慾外,也希望給還沒用過 Next.js 的人,勇敢嘗試的動機。最後想先跟大家說,我只是個凡夫俗子,我會選擇 Next.js ,單純是因為開發者體驗很好,並沒有什麼高深的理由,只是想讓自己樂在其中罷了~

網站開發者的困境

了解了我的背景後,我們來聊聊,作為一個網站開發者,我的困境是什麼。

隨著我進入前端工程師這個領域,我發現在專案開方上有幾個不盡如人意的地方。一個動態網站往往需要一個團隊來完成(至少一個前端、一個後端)。這也代表團隊內部會需要大量的溝通協調。這方面要順暢,除了個人溝通能力與相性以外,還需仰賴一個健全的管理機制。不然往往會覺得做事情卡卡的,總是沒法順利進行。比如說,有些時候彼此的認知不一致,但卻都覺得對方了解了(或自己了解對方了)。這導致事情最終不是以最有效率的方式完成。更慘的是,可能團隊成員彼此根本不在同一條進程上,各自有各自的進度,導致前後端無法順利整合在一起。導致效率低下,轉眼間下一個 sprint 的時間又到了。

但當我接觸 Next.js 與其生態系後,我完全可以不用依靠他人(或是降低對其他人的依賴)。從跟 db 取資料,透過 api 將資料傳給瀏覽器,再到最後頁面的呈現,獨立做出可靠的產品。這讓我覺得在開發上體驗上可以更加自由更加隨心所欲。

最後,底下列出 8 點我最喜歡 Next.js 的優點:

  1. 有 server side rendering 的模式,讓我可以大幅降低前端的狀態管理的程式碼。
  2. 母公司是 vercel(雲端託管平台)。該平台 CI/CD 簡直做的絲滑柔順,還可以透過 commit 查看不同的部署版本。
  3. 能全盤了解這個產品的樣貌。因為全部的程式碼都會在同一個 codebase 下。這也代表我可以很快的將一個完整的 feature 遷移到其他專案上。
  4. 我喜歡他的專案結構,可以讓我快速的找到我的頁面。並且用資料夾名稱跟階層,就能看出對應的 url。
A diagram showing how page.js and route.js files make routes publicly accessible.

Reference

  1. 不會因為前後端進度不一致,導致累積很多 PR 無法 merge,或是難以進行 code review。原本兩天可以做好的東西變成一個禮拜,甚至更長。
  2. 有很多 built-in Component 來幫助你優化使用者體驗。Ex. Link、Image
  3. 有很多 built-in Functions 來幫助你加速開發。Ex. cookies、redirect、usePathname
  4. (純粹我的個人喜好) 比起思考畫面的設計,我更喜歡思考前後端之間的關係,怎麼設計網站的 data flow

以上就是我選擇 Next.js 的原因。如果你想更具體的了解 Next.js 的優點,可以參考這篇文章。那我們下回見唄~

References

© 2024 Eric Tsai