前端和後端Web開發之間的區別

在本文中,我想幫助您從概念上在Web開發的背景下從前端過渡到後端。

首先定義什麼是前端。前端是我們用來在瀏覽器內部識別程序的術語。我們也稱其為客戶端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與NoSQL。微服務與整體。如何以及在哪裡部署我們的應用程序。如何處理更多流量。如何安全地處理數據和請求。如何測試和處理錯誤處理。如何選擇正確的架構。

然後,我們將討論與DevOps重疊的主題,例如如何使用Docker和Kubernetes,如何設置持續集成和持續交付工作流程,如何處理Linux,基礎架構和服務器級網絡。我們需要面對各種選擇,例如使用我們自己的VPS服務器或使用諸如Heroku之類的PAAS,或者使用AWS Lambda進行無服務器化。根據您工作的公司和團隊的不同,您可能還需要準備解決這些主題。

當然,我們需要弄清楚如何將後端連接到前端。如何建立API。 GraphQL與REST。如何處理身份驗證。如何快速擴展API。這些主題涉及前端和後端,以使他們彼此交談。

有很多東西,您可以找到關於這些主題的整本書,這就是為什麼我們將前端開發人員和後端開發人員區分開來,為什麼成為一個能夠解決所有這些問題的全棧開發人員是一項有價值的技能。

當然,您不必知道所有這些內容就可以成為前端或後端開發人員。您需要全面了解這些內容,以了解您尚不了解的內容(尚未)。但是,專注於一個特定的細分市場並在這一方面變得出色也是一個好主意。

例如,您可以是不了解如何處理高級Linux配置的後端開發人員,而可以依靠諸如Heroku之類的PAAS來為您執行此操作。或使用AWS Lambda完全避免這種情況。

我認為重要的是要知道什麼時候最好學習和自己動手,而不是使用支持您工作的工具。