Python Web最流行的三個(gè)基本開(kāi)發(fā)框架

2021-03-02    分類: 網(wǎng)站建設(shè)

什么是Web框架

框架的意思就是把基礎(chǔ)的,常用的功能都寫好了。比如:URL分發(fā)(路由)、數(shù)據(jù)庫(kù)讀寫(ORM)、表單,admin后臺(tái)管理等, 你只需要理解怎么調(diào)用這個(gè)框架,讓你把精力放在業(yè)務(wù)邏輯實(shí)現(xiàn)上。


框架怎么分優(yōu)劣

我們通常說(shuō)的某某框架用起來(lái)舒服,用起來(lái)方便,是基于哪些考慮的呢?

我相信不同的開(kāi)發(fā)人員說(shuō)出的原因是不一樣的。有的喜歡功能強(qiáng)大的框架,有的喜歡易上手的框架,有的喜歡小巧,配置靈活的框架。

有的開(kāi)發(fā)者喜歡框架功能很全,不用自己造輪子,比如Django框架,它提供的功能非常全面,比如(cache、session、登陸、auth授權(quán)等等),和它強(qiáng)大的中間件,提供全方案Web開(kāi)發(fā)支持。我們把這種框架叫做Full-Stack Web框架。

當(dāng)然功能強(qiáng)大和全面的反面就是有點(diǎn)復(fù)雜(相對(duì)的),有點(diǎn)臃腫,不太靈活。所以Django上手要慢一點(diǎn),自己造一個(gè)輪子替換Django某些內(nèi)置功能或者使用第三方功能時(shí)不太靈活。

有的喜歡框架小巧,靈活,就像Flask框架一樣。跟Django相反,F(xiàn)lask小巧、靈活,它的很多功能需要開(kāi)發(fā)者以插件的形式向里安裝,你也可以自己定制。這類不提供全方案開(kāi)發(fā)支持的框架,我們叫做Non Full-Stack Web框架。

有的喜歡速度,喜歡框架本身的速度很快,喜歡I/O性能吞吐高并發(fā),像Tornado和Sanic框架。它們是異步框架,I/O性能相對(duì)就高一些。當(dāng)然異步編程的理解難度要大一點(diǎn)。

上面解釋了什么是Full-Stack Web框架、Non Full-Stack Web框架和Asynchronous 異步框架。下面具體介紹這三個(gè)下面的代表框架。


一、Django

Django是Full-Stack Web框架的代表,功能非常全面和成熟,開(kāi)發(fā)文檔很完備。它在Python Web開(kāi)發(fā)框架的占有率應(yīng)該是第一。Django的宗旨就是盡可能的提供所有功能,讓你用盡可能少的代碼完成業(yè)務(wù)。官方的說(shuō)法是,如果你的開(kāi)發(fā)日期非常緊,那么選用Django是正確的做法。 我們自己開(kāi)發(fā)的項(xiàng)目也全都選用的Django。

缺點(diǎn):

在urls.py里配置URL路由有點(diǎn)麻煩;

模板不能像php一樣在模板插代碼;

數(shù)據(jù)庫(kù)ORM組裝出來(lái)的sql語(yǔ)句性能較差;

二、Flask

Flask算是Non Full-Stack Web框架代表,是一個(gè)輕量級(jí)的Web Framework,它在中國(guó)的應(yīng)用其實(shí)挺廣的。它的設(shè)計(jì)目的是幫助構(gòu)建一個(gè)穩(wěn)定的Web基礎(chǔ)應(yīng)用。它的靈活性體現(xiàn)在,它的模塊化設(shè)計(jì)可以輕松適合開(kāi)發(fā)者的需求。Flask跟Django比起來(lái),你可以自己造輪子,也可以是以插件的形式使用第三方庫(kù)。使用Restful request的風(fēng)格,很適合開(kāi)發(fā)web api,F(xiàn)lask也更加pythonic。

今天正好是愚人節(jié),其實(shí)Flask是在2010年4月1日愚人節(jié)這天發(fā)布的,作者本意是想在這一天整蠱一番的,誰(shuí)知Flask在后來(lái)卻越來(lái)越火了。

三、Tornado

Tornado其實(shí)也是Non Full-Stack Web框架。因?yàn)樗С之惒?,所以就單?dú)說(shuō)一下。

跟上面Django和Flask比起來(lái)的話,好像沒(méi)啥可說(shuō)的了,就是IO性能優(yōu)秀。官方說(shuō)能支持1萬(wàn)個(gè)并發(fā)請(qǐng)求。適合一些高并發(fā)項(xiàng)目。

因?yàn)橐恍┰?,我?duì)Tornado的印象不太好。16年的時(shí)候公司收購(gòu)了一個(gè)項(xiàng)目,然后我去杭州接手這個(gè)項(xiàng)目的技術(shù)部分,系統(tǒng)是用Tornado開(kāi)發(fā)的。團(tuán)隊(duì)是從杭州大廠出來(lái)的,設(shè)計(jì)得非常繁復(fù),說(shuō)是要支持4萬(wàn)并發(fā)的業(yè)務(wù)。但是到我們買的那天,業(yè)務(wù)連4千并發(fā)都不到。接下來(lái)的一年公司為這個(gè)項(xiàng)目付出了很大代價(jià)。


說(shuō)了這么多,如何選擇Python Web框架?

如果你要開(kāi)發(fā)一個(gè)大型項(xiàng)目,比如電商系統(tǒng),需要各種各樣的功能都具備,那么使用Full-Stack Web框架是第一選擇。如果是一個(gè)像內(nèi)容系統(tǒng),功能有限,不需要面面俱到,那么用Non Full-Stack是第一選擇。

Python Web框架大約有30多種,我介紹了幾個(gè)典型的和運(yùn)用面比較大的,上面三種在國(guó)內(nèi)的公司中也是運(yùn)用比較廣泛的,能熟練用其中一種做開(kāi)發(fā),應(yīng)該可以找到個(gè)web開(kāi)發(fā)工作。

名稱欄目:Python Web最流行的三個(gè)基本開(kāi)發(fā)框架
標(biāo)題URL:http://www.muchs.cn/news8/103858.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、網(wǎng)站收錄網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)外貿(mào)建站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)