在這篇文章中,我想從概念上幫助你從前端轉向後端,以 Web 開發的背景來看。
首先,讓我們來定義什麼是前端。前端是我們用來識別瀏覽器內部的程式設計的術語。我們也稱之為客戶端網頁開發。
在前端方面,您需要考慮的是創建並分發在客戶端機器上運行的應用程序,這可以是筆記型電腦、桌上型電腦或移動設備。你建立了一個在每個客戶端的瀏覽器中運行的東西。
在後端方面,您需要設計並構建一個在單個服務器上運行的應用程序(起初),每個客戶端都可以訪問該應用程序。該應用程序在服務器上運行,這是一個由您控制的環境,然後您可以使用服務器端渲染應用程序來向瀏覽器發送應用程序,或者創建一個僅向客戶端發送 JSON 數據的 API(最近非常常見,尤其是與 React、Vue 等前端框架/庫配對使用)。
您已經可以看到這裡有一些重疊。後端可以用於為在瀏覽器中運行的前端應用程序提供服務。
HTML、CSS、JavaScript、圖片、動畫、React、Vue、Svelte、CSS-in-JS、前端的狀態管理、性能優化,所有這些主題(還有更多!)都與前端編程密切相關。
某些應用程序只需要前端部分。例如,我的網站並沒有後端。它是使用 Hugo 生成的靜態網站,我在上面做的所有工作都被視為前端編程:CSS、標記、用於搜索的 JavaScript 等等。
前端編程有自己獨特的一套挑戰:例如,瀏覽器對功能的支持。或者在低端設備上應用程序的性能。構建單頁應用程序。
後端開發與前端完全不同。首先,您退出了瀏覽器環境,這一方面是自由的,但也可能讓人不知所措。
為什麼?原因是您有更多的選擇。
在瀏覽器中,編程語言的選擇總是 JavaScript。或者一種編譯為 JavaScript 的語言,如 TypeScript、Elm 等。
在後端,您可以使用任何您想使用的框架,我的常用選擇是 Node.js,因為它基於 JavaScript,所以我可以成為精通一種編程語言的專家,並且可以在前端和後端使用 JavaScript。
但是您也可以使用以下框架:
- 基於 Python 的 Django
- 基於 PHP 的 Laravel
- 基於 Ruby 的 Rails
- 基於 Elixir 的 Phoenix
- 基於 TypeScript 的 Deno
等等,還有其他許多選擇,包括面向企業的生態系統,如 Java 和 .NET。
我甚至還沒提到 Go 和 Rust 這兩個很好的選擇。
這可能是後端編程的最大優勢:您可以在使用的程式設計語言方面有很多選擇,因此可以選擇您喜歡的語言進行開發。但如果您不確定自己喜歡什麼,這也可能導致「分析麻痺」。
在後端,我們不必面對前端需要面對的問題。我經常聽到的一個說法是前端開發變化太快。每天都會冒出新事物,並且最好的工具也會從一個月到另一個月改變。這並不是虛假的陳述。相比之下,後端在知名度高且成熟的環境和工具中顯得更加低效,一個編寫良好的後端可以在多年內仍然感覺現代化,而對於前端來說,則無法達到同樣的效果。
在後端,我們有自己一套問題,當然還有其他議題。例如,如何在資料庫中存儲數據。如何選擇適合的資料庫。SQL vs NoSQL。微服務 vs 單片應用。如何部署我們的應用程序以及何處進行部署。如何處理更高的流量。如何安全地處理數據和請求。如何測試和處理錯誤處理。如何選擇正確的架構。
然後,我們還有與 DevOps 重疊的主題,例如如何使用 Docker 和 Kubernetes,如何建立持續集成和持續交付工作流程,如何處理 Linux、基礎架構和伺服器級網絡等問題。取決於您所在的公司和團隊,您可能需要準備應對這些議題。
當然,我們還需要弄清楚如何將後端與前端連接起來。如何構建 API。GraphQL vs REST。如何處理驗證。如何使 API 在大規模情況下快速運行。這些都是涉及前端和後端的主題,旨在使它們彼此通信。
這是很多東西,您可以在這些主題上找到整本書,這就是為什麼我們將前端和後端開發人員區分開來,以及為什麼成為能夠在所有這些問題中穿梭的全棧開發人員是一種寶貴的技能。
當然,您不需要知道所有這些東西才能成為合格的前端或後端開發人員。您需要在高層次上了解這些東西,以了解自己還不瞭解的內容。但是,專注於某個特定領域並在該領域成為專家也是一個好主意。
例如,您可以成為一位後端開發人員,但不知道如何處理高級 Linux 配置,而依賴於像 Heroku 這樣的 PAAS 來為您處理。或者使用 AWS Lambda 避免這一點。
我認為重要的是要知道在什麼時候最好學習和自己動手,以及何時使用支持您工作的工具。tag:前端開發, 後端開發, 網頁開發, 前端, 後端