前言略過,不過這裡用到一個片語 under our belt : 學到某事 。 送給大家~
接下來會以 框架
二字取代 frameworks
, 一直切換輸入法而且字也好長 , 終於受不了了 。
還有...
縮寫/簡稱/代稱 | 原全文 |
---|---|
框架 | frameworks |
CS/CSR | Client-side/Client-side Render |
SS/SSR | Server-side/Server-side Render |
本章閱讀需求: Server-side code 處理 & 回應 res HTTP req 以上兩者的基本了解 ( 回去看第五到七天,或原本網站 Client-Server overview 篇 )
本章目標: 了解框架可以簡化開發、維護 SS code 。 讓讀者思考如何選擇框架
SS 框架 , 又稱Web App 框架 , 提供一些工具 、 函式庫 ( libraies ) 簡化常見的網站開發任務 , 包含
之後我們會提供較多的細節 , 來談談框架在開發上的幫助;
還有一些可以注意哪些規範來挑選框架 , 然後列出一些選項。
你不一定要用框架 , 但強烈建議你用框架 , 因為這可以讓你活得更輕鬆
-- MDN
我們會討論一些網站開發的功能 , 要注意的是 : 並不是所有框架都必須提供這些功能
框架允許我們用簡單的語法產生 SS code 去處理 req, res 。
下面範例為 Django ( Python 的 web 框架 ) ,
所有的 view function ( req 處理器 ) 接收 HttpReq
object , 且回傳的 HttpRes
格式必須是 String
# Django view function
from django.http import HttpResponse
def index(request):
# Get an HttpRequest (request)
# perform operations using information from the request.
# Return HttpResponse
return HttpResponse('Output string to return')
大部分的網站都會有很多的連結 , 只用一個 function 處理這些連結會難以維護 ,
框架有個簡單的機制可以 map URL patterns 到特定處理器 function , 有更高的維護性 ,
因為我們不用動到底層的 code , 就可以更換所使用的 URL
不同的框架會有不同的 map 機制 。
這是 Flask ( 也是 Python 的 web 框架 ) :
@app.route("/")
def hello():
return "Hello World!"
這是 Django :
urlpatterns = [
url(r'^$', views.index),
# example: /best/myteamname/5/
url(r'^best/(?P<team_name>\w.+?)/(?P<team_number>[0-9]+)/$', views.best),
]
有很多種方法可以把資料寫入 HTTP req 。GET
req 可能會取得由 URL paramters 或 URL structure 寫入的資料或檔案 ;POST
req 在 server 上更新 resource , 這個行為會將要更新的資料放在 req body 裡。
HTTP req 也可能會把在 session 或 cookie 裡 user 的資料帶入。
框架有個 programming-language-appropriate 機制 , 來存取資料。
舉例: Django 傳遞 HttpReq
object 到每個 view function ,
這個 object 含有存取目標 URL 方法及特性 、 req 類型 、 GET/POST parameters 、 cookie/session data ... 等等 。
Django 也可以傳遞從 URL mapper 中 capture patterns
寫入的資訊