Web 框架

CGI

CGI 的全称叫 Common Gateway Interface,翻译成中文大概叫 通用网关接口,不用去记这些关键词。
所谓 CGI 本质上就是用户从浏览器(客户端)发送一个请求过来,CGI 调用服务器(服务端)上的一个应用程序,返回结果之后,以 HTML 的形式再呈现出来。
最原始状态的 CGI 是非常低效率的,因为一次 Request 过来了,为了返回 Response,就要启动一次程序,然后退出程序,再来再启动,周而复始。如果是一个网站,那么它应该是常驻的(一直能访问),不然这么低的运行效率 (反复启动、退出程序) 肯定不行,所以在互联网技术发展过程中,很自然产生了 Web Server 相关的进化。

WSGI 全称叫 Web Server Gateway Interface,它是为 Python 而生的 协议;所谓的 Web Server,就是为 Web 而生,而所谓的 Server,意味着它应该是 常驻 的。但是我们不用去管 WSGI 这个关键词,像其它后端编程语言中,未必叫 WSGI,但也都有对应的逻辑存在。

Web 框架

Web 是建立在 HTTP 基础之上的,HTTP 协议,全称叫 HyperText Transfer Protocol (超文本传输协议)。重点已经加粗了,表示 Request (客户端请求) 与 Response (服务端返回) 都是 文本
但是这个文本的组织形式比较麻烦,比如内容里面要包含当前要传输的数据有多大、MimeType(网页类型,比如 text/html、text/css) 是什么,意味着返回一个 Response 时,除了正常的 HTML 源码之外,还有很多其它的属性需要压制到 HTTP 协议对应的源数据中。而且,这个压制是非常机械的,如果手写代码对应这种原始的 HTTP 协议内容,估计 coder 自己代码要写崩溃的,很低效、且太枯燥了。
所以 Web 框架 (Frame) 出来了,它完成了大量重复性工作,你只要调用对应的函数就可以了,而且比如实现对应 URL 的 路由匹配 分派时,一个 Web Frame 通常都会提供非常便捷的方式来实现,而不是自己在一个 Response 函数中,从零开始。
其它后端编程语言中,一般都有对应的几个 Web 框架,比如在 Python 就有 Django、Flask、web.py 等。

FisrtWeb 的 Web 框架

我们课程中的Web 框架,其实就是 FristWeb 这个 App。
在 FirstWeb 中,实现 Web 服务器的逻辑,其基础的 Web 框架是 Flask,使用的模板框架是 Jinja2。

也不用去管这些细节。
所谓的框架,本质上讲就是一个 工具,工具开箱了,最多看看说明书,就可以直接拿来用了。至于这个工具,定性、定类为什么,并不重要。

最重要的,我们要在一开始,要知道使用工具。就 Web 开发而言,这个工具,肯定逃不开基础的 Web 框架