1. 程式人生 > Django入門教學 >02 什麼是 Web 框架?

02 什麼是 Web 框架?

上一節課我們簡單地認識了下 Django 框架,在正式開始學習它之前,我還要跟你說下 Web 框架到底是個什麼東西?為什麼市面上會有各種各樣形形色色的 Web 開發框架?以及使用 Web 框架進行開發的優勢在哪裡?這些問題在這節課裡面你都可以找到答案。

1. Web 框架

在計算機領域,框架指的是由部分組織、機構或者個人開發出的一套程式模板。我們藉助這套程式模板可以快速進行應用開發。往往一個優秀的框架是能幫我們簡化各種常用操作,比如各種型別資料庫 (SQLite、MySQL 或者 PostgreSQL)的增刪改查、簡化各種熱門網際網路元件(如訊息中介軟體等)的接入以及提供各種複雜功能的再包裝。

特別對於 Web 框架,會對到發生過來的 HTTP 請求做一系列的過濾處理,最後才到達我們的檢視函式進行處理。計算機的每一個領域都有大量的早期網際網路工作者為我們做了不少工作。為了減少重複造輪子,早期的網際網路工作者為我們開發了許多優秀的程式碼庫,而後逐漸演變成開發框架,以供普通開發者使用。正是由於開發框架的出現,大大降低了程式設計師的開發門檻,也導致越來越多的人員進入該行業。

Web 框架是專門針對 Web 應用開發的一套開發工具,幾乎都是開源和任意使用,由社群維護。由於 Web 的後端開發語言有很多種,比如 Java、Python 以及 Go 等,它們都對應著若干個非常流行的 Web 框架。Java 中最火的 Web 開發框架莫過於 Spring

以及 Spring 系列框架,Python中有 DjangoFlaskTornado 等。而在這些框架的基礎上,我們幾乎只需要十幾行就能構建出一個簡單的 Web 服務。

2. 使用 Web 框架的好處

使用 Web 框架進行開發的好處如下:

  • 應用業界最流行的 Python Web 框架,如 Django、Flask 等,可以幫我們快速完成應用開發,節省開發時間和人力投入,這種做法往往是中小型企業開發的不二之選。大型企業也許會開發出自己的服務框架,比如阿里的微服務框架 Dubbo。但對於大多數企業而言,由於財力和人力限制,基於框架開發是最高效的解決方案

  • 流行的 Web 框架往往具備一定的優異效能和良好的程式碼規範,我們遵守一定的開發原則就能構建出良好風格的 API 介面

    ,同時開發應用也會具備框架的優異效能。例如 Tornado 框架是專注高效能的 Web 框架;

  • 避免重複造輪子,由框架完成各種常用操作程式碼。開發人員集中精力完成業務邏輯開發,可以顯著降低 Web 開發難度

  • 在熟練使用 Web 框架之後,我們可以認真學習 Web 框架原始碼,這些程式碼是來自全世界優秀的程式設計師奉獻智慧的結晶。從中我們可以學習到如何處理 Web 請求,如何使用開發語言(如 Java、Python 等)的各種設計模式、高階封裝等。只有深入學習了這些知識,我們才有可能成為一名合格的應用開發者。

在資訊保安領域,只會使用工具進行網路攻擊的人,被嘲笑為指令碼小子。只會使用框架,調各種 API 介面的開發者,往往被人戲稱為調包俠。因此,掌握 Web 框架的使用是第一步,除此之外,我們在學完框架的基本使用之後,還需要真正深入框架原始碼進行學習,除了能快速定位開發問題之外,也是快速提升個人能力的一個有效途徑。

3. 各種語言的 Web 框架介紹

目前,主流的 Web 框架可以按照語言型別進行分類,比如基於 Java 開發的 Web 框架、基於 Python 開發的 Web 框架和基於 Go 開發的 Web 框架等等。每種語言領域內的 Web 框架也是各有特色,有大而全,有小而精,還有專注非同步高效能等等。

熱門的 Python Web 框架有:

  • Django:基於 MTV 的框架模式,有強大的資料庫功能、強大的後臺管理功能、模板系統、快取系統等;

  • Flask:小而精的 Web 框架典範,可擴充套件性強;

  • Tornado: 輕量級的 Web 框架,其特點是非阻塞和高效能,是實時 Web 服務的一個 理想框架。

主流的 Java Web 框架有:

  • Spring/Spring Boot/Spring Cloud 等:幾乎是大部分 Java web 開發者的首選和必選,佔據了大部分市場。基於 Spring 及其衍生框架,我們能迅速開發一個 Java Web 服務,幾乎不需要任何 Web 開發基礎;

  • Dubbo:阿里巴巴的開源的高效能 RPC 框架、特點是分散式、高效能以及高度可擴充套件;

  • Struts2:老一代的 Java Web 框架,特點是高度成熟。不過目前趨勢來看,已經很少人使用 Struts2 來開發新的 Web 服務。

Go 作為近幾年快速崛起的後端開發語言,也受到了廣大後端開發者的追捧,Go Web 框架也隨之而來,其中的典型代表有:

  • Beego 框架:它類似於 Python Web 框架 Django,走大而全的風格,具備各種 Web 應用程式的通用功能;
  • Gin 框架:Gin 是 Go 的一個微框架,封裝優雅,介面友好。具有快速靈活,容錯方便、效能優異等特點;
  • Echo 框架:Go 的微型 Web 框架。其具備快速HTTP路由器、支援擴充套件中介軟體,同時還支援靜態檔案服務。

4. 小結

本小結介紹了 Web 框架相關知識,梳理了使用 Web 框架開發的諸多好處,最後介紹了三種後端開發語言的主流 Web 框架。任何一種 Web 框架其核心思想和封裝功能都有很多相似。完全掌握一個 Web 框架的使用並熟讀其原始碼,掌握框架核心處理流程,對於快速上手使用其他 Web 框架以及提升自身編碼水平都有極大的促進作用。