指路牌
《Flask Web開(kāi)發(fā)》
《Flask Web開(kāi)發(fā) 基于Python的Web應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)》
《Flask Web開(kāi)發(fā)》是否適合新手入門(mén)Python Web開(kāi)發(fā)?
正文
《Flask Web開(kāi)發(fā) 基于Python的Web應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)》,O'Reilly"動(dòng)物書(shū)系列"的"狗書(shū)",應(yīng)該是很多Flask初學(xué)者被推薦使用的入門(mén)書(shū),但是這本書(shū)真的適合初學(xué)者嗎?
Python的Web框架非常多,例如Django、Flask、Tornado、Web.py,Tornado沒(méi)有接觸過(guò),無(wú)法評(píng)價(jià),Django一般都會(huì)和"重型"聯(lián)系在一起,很少會(huì)直接推薦給初學(xué)者,F(xiàn)lask和Web.py都屬于輕型框架,網(wǎng)上有人將Flask與Web.py對(duì)比,有一篇很有意思的Blog有興趣的可以去看一下關(guān)于Flask和web.py的一句話比較(很老的blog),孰優(yōu)孰略有請(qǐng)各位自行選擇。
值得一提的是微信公眾平臺(tái)的入門(mén)教程文檔,就是基于web.py編寫(xiě)的
這里要吐槽一下微信公眾平臺(tái)維護(hù)文檔的團(tuán)隊(duì),能不能別出這么級(jí)的錯(cuò)誤......
《Flask Web》開(kāi)發(fā)是我Web開(kāi)發(fā)的入門(mén)書(shū),在第一版的時(shí)候就買(mǎi)了,后來(lái)書(shū)出了第二版,也買(mǎi)了第二版。這篇Blog的重點(diǎn)不是討論Flask框架,而是討論這本書(shū)本身,如果你選擇學(xué)習(xí)Flask,以下意見(jiàn)對(duì)你才有意義。
直接拋出結(jié)論:: 這本書(shū)并不適合初學(xué)者 ,或者說(shuō),"現(xiàn)在"不適合了。
這個(gè)結(jié)論是基于以下幾個(gè)原因
- 模板渲染的內(nèi)容
- 部分章節(jié)國(guó)內(nèi)無(wú)法實(shí)踐
- 內(nèi)容太過(guò)于"系統(tǒng)"
以上原因其實(shí)有些是有點(diǎn)吹毛求疵的,但是這些觀點(diǎn)的出發(fā)點(diǎn)是兩個(gè):"對(duì)于初學(xué)者" and "想快捷搭建簡(jiǎn)單web服務(wù)的開(kāi)發(fā)者"。
模板渲染"過(guò)時(shí)"了.........嗎?
這個(gè)問(wèn)題的答案我不得而知,但起碼在我心里,模板渲染是"過(guò)時(shí)的老東西",因?yàn)楫?dāng)下流行的是前后端分離,是React、Vue、Angular三大前端框架,而不是還需要后臺(tái)操控的模版渲染。
Flask與Jinja2幾乎總是被同時(shí)提起的,這本書(shū)實(shí)現(xiàn)的項(xiàng)目的整體思路都是基于Jinja2模板引擎的,這在這本書(shū)發(fā)行期是沒(méi)任何問(wèn)題的,但是現(xiàn)在前端技術(shù)的發(fā)展已經(jīng)讓這本書(shū)的內(nèi)容跟不上了,現(xiàn)在提倡的是"前后端分離",前后端通過(guò)Rest API交互。
我個(gè)人是直接放棄了模板渲染,直接從Vue入手的前端技術(shù)。
部分章節(jié)國(guó)內(nèi)無(wú)法實(shí)踐
《Flask Web開(kāi)發(fā)》一個(gè)很大的特色點(diǎn)就是整本書(shū)就是一個(gè)項(xiàng)目,完成了整本書(shū)的教程,就是完成一個(gè)博客系統(tǒng),就像書(shū)評(píng)說(shuō)的一樣,相比于只講解零散代碼的其他書(shū)籍,這無(wú)疑是很好的。但,"第六章電子郵件"必是一道坎,因?yàn)闀?shū)中的內(nèi)容是基于Gmail的....眾所周知的原因,我們無(wú)法使用Gmail提供的SMTP服務(wù),甚至無(wú)法登陸Gmail,初學(xué)者必然需要在網(wǎng)上找尋替代解決方案(我當(dāng)時(shí)是找的126的SMTP服務(wù)替代)。
為什么是必然呢?跳過(guò)這一章不行嗎?因?yàn)檫@本書(shū)的內(nèi)容一環(huán)扣一環(huán),不把這個(gè)問(wèn)題解決,后續(xù)的內(nèi)容就無(wú)法推進(jìn),對(duì)于初學(xué)者,答案明顯是不行,這是學(xué)到一定地步才能做到的。
至于后面第17章國(guó)內(nèi)很少使用的云平臺(tái)就更不提了
內(nèi)容太過(guò)于"系統(tǒng)"
這可能是最奇怪的一個(gè)原因,"系統(tǒng)"點(diǎn)難道還錯(cuò)了?當(dāng)然沒(méi)錯(cuò),但是還是那個(gè)原因,不適合初學(xué)者。在我看來(lái)初學(xué)者能編寫(xiě)視圖函數(shù),操作ORM,學(xué)會(huì)使用鉤子,配置跨域,已經(jīng)能夠完成一個(gè)簡(jiǎn)單的web應(yīng)用了。而數(shù)據(jù)庫(kù)遷移、工廠函數(shù)、藍(lán)本、單元測(cè)試等,不是一個(gè)初學(xué)者能hold的住的內(nèi)容?但是這些知識(shí)在書(shū)中是交叉進(jìn)行,并且從第二部分開(kāi)始強(qiáng)制全部?jī)?nèi)容都是基于工程化結(jié)構(gòu)(工廠函數(shù)、藍(lán)本等)進(jìn)行的,這里我在初學(xué)時(shí)是直接被勸退了的。
即使跳開(kāi)初學(xué)者這一原因,就現(xiàn)在而言,我也不是很喜歡使用Flask的工程化結(jié)構(gòu),為什么?這可能需要先明確一點(diǎn),"我為什么要使用Flask?",因?yàn)檩p便,快捷。我選擇Flask不是為了開(kāi)發(fā)一個(gè)商用工程項(xiàng)目(如果是這個(gè)目的肯定就用SpringBoot了),而是為了快,短時(shí)間內(nèi)完成一個(gè)POC,或者在學(xué)習(xí)集群等技術(shù)時(shí)構(gòu)建一個(gè)簡(jiǎn)單的服務(wù),這些需求往往只需要幾十行代碼就能完成,為什么要自找麻煩的使用工程化的目錄結(jié)構(gòu)呢?
最近寫(xiě)的自己的博客系統(tǒng)雛形,配置跨域、視圖函數(shù),ORM,基于web token的登陸管理,也才不到140行
結(jié)論
所以這本書(shū)的正確打開(kāi)方式是什么呢?
我個(gè)人看來(lái),這本書(shū)第5章之前的內(nèi)容(前60頁(yè),整本書(shū)約200頁(yè))是初學(xué)者可以看的,會(huì)有很多重要概念,但是再往后的,只推薦第14章,比較矛盾的點(diǎn)是第14章是基于工程化結(jié)構(gòu)編寫(xiě)的,直接看會(huì)有一些難度......所以現(xiàn)在這本書(shū)在我手里等價(jià)于一本工具書(shū),需要的時(shí)候翻閱需要的章節(jié),而且大部分時(shí)間需要再處理一遍示例代碼才能使用,但是從始至終,這本書(shū)我都沒(méi)有系統(tǒng)從頭看到尾.
以上內(nèi)容,希望能給想要以此本書(shū)的入門(mén)Flask的人一點(diǎn)用處。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
