第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

什么是 web 開發(fā)框架

上一節(jié)課,我們簡單地認識了下 Flask 和 Django 這兩個 Web 開發(fā)框架。但是限于篇幅原因有一個很重要的概念 “什么是 Web 開發(fā)框架?” 并沒有在上節(jié)課講到。這節(jié)課我們就來學習下什么是 Web 開發(fā)框架。

1. web 開發(fā)的歷史

1.1 靜態(tài)內容的網(wǎng)站

1989 年,TimBerner 提出了一種能讓遠隔兩地的研究者們共享知識的設想。它的基本理念是:借助多文檔之間相互關聯(lián)形成的超文本(HyperText),連成可相互參閱的 WWW(World Wide Web)。

在互聯(lián)網(wǎng)早期,網(wǎng)站的內容是靜態(tài)的,瀏覽相同地址的頁面返回的內容不會發(fā)生變化。使用 HTML 語言描述網(wǎng)頁的內容,例如,用 HTML 描述某個網(wǎng)站的首頁如下:

<html>
<body>
   <p>今天的日期是 2020 年 1 月 1 日</p>   
</body>    
</html>    

無論什么時候去訪問這個網(wǎng)站,網(wǎng)頁總是顯示 “今天的日期是 2020 年 1 月 1 日”,如果用戶希望訪問網(wǎng)頁的時候能夠實時顯示今天的日期,就無法實現(xiàn)這樣的功能了。

由于網(wǎng)頁的內容是不發(fā)生變化的,因此早期互聯(lián)網(wǎng)站只能用于共享靜態(tài)的文檔,無法實現(xiàn)復雜的應用。

1.2 早期的動態(tài)網(wǎng)站

后來,互聯(lián)網(wǎng)得到了飛速的發(fā)展,人們不再滿足網(wǎng)頁只有靜態(tài)文本的形式,于是開發(fā)動態(tài)網(wǎng)頁的技術就應運而生了,例如專用于開發(fā)動態(tài)網(wǎng)頁的 PHP 編程語言。1995 年,Rasmus Lerdorf 發(fā)明了 PHP 編程語言。PHP 是在服務器端執(zhí)行腳本語言,它輸出 HTML 文本返回給瀏覽器。

圖片描述

使用 PHP 開發(fā)的網(wǎng)頁,網(wǎng)頁內容是運行時刻動態(tài)生成的。在上面的例子中,很容易實現(xiàn)實時顯示今天的日期的功能,PHP 腳本通過調用 date () 函數(shù)獲取當前日期, 即可生成包含有當前日期的 HTML 文件。

1.3 web 開發(fā)需要越來越多的編程

在互聯(lián)網(wǎng)早期,網(wǎng)站中的主要內容由靜態(tài)頁面構成,開發(fā)一個網(wǎng)站并不需要太多的編程工作,網(wǎng)站開發(fā)人員會編寫 HTML 文件即可,很多網(wǎng)站甚至于不需要程序員的參與。

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站的功能越來越復雜,網(wǎng)站提供的功能日趨豐富,網(wǎng)站更像是一個本地應用程序,而不是單純展示內容的網(wǎng)頁。在這個時期,開發(fā) Web 需要編寫大量的程序,一個復雜的 Web 開發(fā)項目包含有數(shù)萬行、甚至于數(shù)十萬行的源代碼,也就是說,寫一個網(wǎng)站開始變得越來越 “麻煩”。

不僅是麻煩,而且網(wǎng)站開發(fā)需要進行大量的重復性工作,比如說網(wǎng)站 A 需要開發(fā)一個后臺管理系統(tǒng),網(wǎng)站 B 也需要后臺管理系統(tǒng)。后臺管理系統(tǒng)功能的實現(xiàn)邏輯又非常相似,我們開發(fā)兩個網(wǎng)站就要寫兩套后臺管理系統(tǒng)的代碼,極大地增加了程序員的工作量。

既然是這樣,我們?yōu)槭裁床荒馨丫W(wǎng)站開發(fā)中這些相似甚至一樣的功能抽離出來,封裝在一起,等到需要的時候再調用呢?

那個時候的程序員非常有效率,說干就干,他們把大量的相似性功能封裝起來,等到需要使用的時候進行調用,于是就慢慢地形成的 “框架” 的概念。

2. 什么是 Web 開發(fā)框架

其實框架這個詞并不是 Web 開發(fā)領域所首創(chuàng),他最早出現(xiàn)在軟件開發(fā)行業(yè)中,一開始 “框架” 是這樣被定義的:框架是一種提供了可重用的公共結構的技術,為構建新的應用程序提供了極大的便利。

例如:在桌面應用程序開發(fā)的領域,微軟公司的 Visual Studio C++ 為應用程序生成框架,基于 VC++ 應用程序框架可以大大地提升桌面程序的開發(fā)效率。

而隨著 Web 開發(fā)項目的復雜度的日益提升,軟件開發(fā)中的框架技術被引入到 Web 開發(fā)領域。Web 開發(fā)框架是用于進行 Web 開發(fā)的一套軟件架構,Web 框架為 Web 應用程序提供了基礎的功能。開發(fā)人員在 Web 框架的基礎上實現(xiàn)自己的業(yè)務邏輯,基于 Web 框架開發(fā)應用,開發(fā)人員只需要專注應用的業(yè)務邏輯,非業(yè)務邏輯的基礎功能則由框架提供,從而提升開發(fā)效率。

3. web 開發(fā)框架的主要作用

3.1 利用 web 開發(fā)框架簡化應用開發(fā)

Web 框架的主要作用是減輕 Web 應用開發(fā)的工作量。使用 Web 框架進行 Web 開發(fā)的時候,在進行路由分發(fā)、頁面模板、數(shù)據(jù)緩存、數(shù)據(jù)庫訪問等方面,不需要自己再重新實現(xiàn),而是將業(yè)務邏輯相關的代碼寫入框架就可以。

下面通過一個具體的例子說明,Web 框架是如何減輕 Web 應用開發(fā)的工作量。

3.2 論壇系統(tǒng)概述

一個論壇系統(tǒng)由如下數(shù)據(jù)構成:

  • 主題,每個主題包含有標題和內容,使用 topicID 標識該主題;
  • 用戶,每個用戶包含姓名和密碼,使用 userID 標識該用戶。

假設論壇的域名是 www.bbs.com,它向外界提供了若干可訪問的 URL:

URL 功能
http://www.bbs.com/topics/12373 訪問 topicID 為 12373 的主題
http://www.bbs.com/users/1353 訪問 userID 為 1353 的用戶頁面

3.3 處理頁面的函數(shù)

在服務器端有兩個處理頁面函數(shù):

函數(shù) showTopic(topicID)

  • 處理形式為 /topics/xxx 的頁面請求,xxx 為 topicID;
  • 根據(jù) topicID 返回對應的 topic 的內容;

函數(shù) showUser(userID)

  • 處理形式為 /users/xxx 的頁面請求,xxx 為 userID;
  • 根據(jù) userID 返回對應的 user 的內容。

3.4 服務端處理流程

假設瀏覽器訪問 URL http://www.bbs.com/topics/12373,處理的邏輯如下圖所示:

圖片描述

  1. 服務端收到 /topics/12373 的頁面請求;

  2. 查詢合適的函數(shù)處理路徑為 /topics/12373 的頁面;

    • showTopic 處理形式為 /topics/xxx 的頁面請求;
    • showUser 處理形式為 /users/xxx 的頁面請求;
    • 因此選擇 showTopic 來處理此次頁面請求。
  3. 將頁面路徑拆分為 /topics12373,把 12373 作為 topicID

  4. topicID 傳遞給 showTopic,執(zhí)行該函數(shù)。

對每一個頁面處理請求都需要進行如上的 4 步處理,在這 4 個步驟中,只有第 4 步才是應用關心的業(yè)務邏輯。如果基于 Web 框架開發(fā) Web 應用,Web 框架完成第 1 步、第 2 步、第 3 步的工作,應用程序完成第 4 步的工作。即應用程序只需要編寫具體處理頁面的函數(shù),其余繁瑣的、與業(yè)務無關的工作交給 Web 框架,因此使用 Web 框架可以大大地減輕開發(fā)的工作量。

4. 小結

本節(jié)課講解了 Web 開發(fā)框架的概念,使用思維導圖描述如下:

圖片描述

引入 Web 開發(fā)框架的目的:讓開發(fā)人員只需要專注應用的業(yè)務邏輯,非業(yè)務邏輯的基礎功能則由框架提供,從而提升開發(fā)效率。通過一個具體的例子,演示了 Web 開發(fā)框架處理請求的步驟。