網頁是怎麼運作的? 一次搞懂前端與後端
前言
一直以來在跟別人介紹自己的職業的時候,可能都是講:寫程式的、寫網頁的,不會直接說自己是前端或後端,因為常常說了之後,對方還是一頭霧水,不太了解這是什麼。
就跟講自己是工程師,對方可能會以為是寫硬體、韌體、IC 設計那類的,那還是直接講自己是寫網頁的最方便。
因此想要試著將前端、後端以及網頁運作的基本概念,用簡單比喻且盡量不要有大量技術名詞的方式來跟大家做介紹。
網頁運作的基本概念
大家應該都有去咖啡廳的經驗吧?想像一下這個情境:
- 你走進了一間咖啡廳
- 向店員點了一杯咖啡
- 開始製作咖啡
- 店員把咖啡交給你
網頁的運作,其實可以用這樣的流程來理解。 接下來會用這個情境,一步步的拆解:前端是什麼、後端是什麼,以及它們各自負責的任務。
前端 (Frontend)
我們走進咖啡廳裡,看到的裝潢、燈光、桌椅,櫃台的服務員等,所有你看的到、會接觸到的東西,就是前端的範圍。
以網頁來看,就是版面結構、文字、圖片、按鈕等樣式,以及與網頁的互動。例如點擊按鈕、輸入文字、頁面滑動後觸發的事件等,使用者能直接接觸與操作的部分,都是前端負責處理。
你現在看到這個網頁的右上角有一個太陽的圖示,點擊後會讓網頁變成深色模式,這個就是與網頁的互動。
網頁效能優化、載入順暢度,在前端中是非常重要的一環。 想像當你走進咖啡廳的時候,推開大門卻等了超過 10 秒才進的去,或是點了一杯咖啡,結果等了半小時才送過來。
這樣的體驗是不是就不會想再去這間咖啡廳了呢?
網頁也是一樣,如果沒有持續優化這些細節,確保網頁載入順暢度,使用者就會流失。甚至在網路搜尋引擎上,會因為體驗不佳而降低排名,導致網站流量的降低。
而網頁前端技術通常是使用 HTML、CSS、JavaScript 依照畫面設計稿來實現這些功能。(還記得以前用一堆語法來佈置無名小站的樣式嗎,它就是 CSS)
後端 (Backend)
廚房裡原料的真實庫存量、紀錄會員資料與集點紀錄、餐點的製作過程,後端負責處理這些真實資料與商業機密的部分。
咖啡廳不需要告訴客人製作餐點的原料還有多少,也不能將所有會員資料告訴其他客人。當然,餐點的製作過程、使用的獨家配方,這種商業機密更是不會洩漏出去。
對客人來說,實際會看到的只有:
- 菜單上提供的餐點,以及有哪些已經售完的標示
- 自己的會員資料與目前累積的點數
- 拿到一杯製作完成的咖啡
也就是說,後端處理資料的時候,會判斷「哪些資訊可以提供給這個使用者」,再將必要的資料回傳給前端,由前端呈現在畫面上。
接著,我們再多看看一些細節。
上面提到的原料庫存、會員資料、集點紀錄,這些真實資料不會直接放在前端,而是會存放在一個叫做「資料庫」的地方。
舉個例子: 當 A 會員消費了 100 元,可以獲得 1 點時,後端會先去資料庫查詢這位會員紀錄。
- 有記錄:把點數加 1,更新資料庫,並把目前的點數資訊回傳給前端
- 沒有紀錄:在資料庫新增一筆 A 會員的資料,將點數設為 1,並回傳給前端
如果少了資料庫,那麼每次重新整理頁面,這些資料就會全部消失,因此會需要一個地方來長期保存資料。
前端如何與後端溝通
到這裡我們了解到前端發出需求,後端接收需求、處理邏輯,回傳給前端的流程。在前端與後端之間還有一個關鍵的東西,就是「API」。
相信你可能在某些地方有聽過 API 這個名詞,它是用來讓不同的服務、程式之間能夠溝通的橋樑。API 定義好需求、回應的格式與規則,前後端就必須遵照這些規則來進行溝通,才能夠確保溝通順利。
可以把 API 想像成服務生加上點餐單的組合。
- 客人開始點餐 (前端)
- 將需求告訴服務生 (API)
- 服務生把點餐單交給廚房 (後端)
- 廚房依照需求製作餐點 (後端)
- 廚房將做好的餐點交給服務生 (API)
- 服務生將餐點交給客人 (前端)
如果少了 API,就會像是你走進了咖啡廳,直接叫廚房的人幫你炒一盤炒飯一樣。
簡單來說,看的到的東西都是前端,看不到的東西就是後端?
不完全是對的。如果更深入的理解的話,前端、後端其實還有涵蓋很大的範圍。前端可以處理使用者看不到的東西,而後端也可以產生使用者看到的畫面。
由於本篇是網頁運作的基本介紹,如果繼續深入下去就會冒出更多的技術名詞,因此不會往更深的部分探討。
如果單純以看的到的就是前端、看不到的就是後端來區分,會出現一些邏輯瑕疵而造成誤導。對初學者來說,較安全的理解方式是:
前端是負責畫面的展示及互動,後端是負責真實資料的存取與處理。
UI/UX
怎麼前端後端講完了,突然冒出了一個新名詞!?
前面有稍微提到,前端的畫面會依據設計稿來呈現,而設計稿就是由 UI/UX 設計師所設計的,可以想像成一張咖啡廳的藍圖。
而 UI 與 UX 分別負責不同的事情。
UI 使用者介面 (User Interface)
UI 負責視覺與美感。例如咖啡廳的菜單設計、餐具樣式、裝潢風格等。網頁上就是版面的排版、字體與顏色選擇、按鈕樣式等,UI 決定了網站的視覺效果。
UX 使用者體驗 (User Experience)
UX 負責互動與感受。例如咖啡廳的空間配置、點餐流程、整體氛圍。網頁上就是操作產品時,流程自然、互動順暢、符合使用者預期。
簡單來說,UI 決定看起來怎麼樣,UX 決定用起來怎麼樣。
UI/UX 的逆向設計
優秀 UI/UX 可以讓使用者有舒適的體驗,但有些產品反而會利用 UI/UX 來設計陷阱,來操作你的行為。
日常中有沒有遇過一種情況,在使用訂閱制服務的產品時,當你想要解除訂閱時,卻發現解除訂閱的按鈕藏得非常隱密,或者是在解除訂閱的流程中,需要填寫一堆資料、好幾次的確認步驟(甚至在最後的確認,頁面上的確認跟取消的按鈕互換位置)。
總有一股他好像不想讓我解除訂閱的感覺。
這個就是 UI/UX 的一種設計:「暗黑模式 Dark Pattern」。
各種的煩躁流程、反人性化與反使用習慣的設計,運用各種手段刻意設計出極差的 UI/UX 流程。為的就是拉長操作流程,讓使用者感到煩躁而放棄解除訂閱,藉此達到他們的商業利益。
結語
現在你已經有了網頁的基本概念,之後打開一個網頁你就會知道: 看到的畫面是由「前端」來呈現,背後的資料與邏輯是由「後端」來負責。
就像走進一間咖啡廳,你看的到店面與感受的到服務,而讓整間咖啡廳運作的是後方的廚房與整套流程。
以後網站出現問題,你就可以開始分辨了,是畫面壞了、還是後端資料沒有正確的回傳。如果你是已經開始用 AI 來開發小工具或產品,這些基本概念也能幫助你更精準的描述需求,讓 AI 更理解你想做的事情。
如果對網頁開發產生了一些興趣,也可以試著將本篇的一些關鍵字餵給 AI 來解釋,簡單嘗試製作一個自己的網站。