看到一個介紹Bottle的文章,覺得很有意思,所以到處搜羅了一些有意思的東西,總結如下。
在淺談五大Python Web架構(http://www.cnblogs.com/babykick/archive/2011/11/28/2265920.html)中介紹了幾種Python的Web架構,然後又看了一下Web架構比拼測評(http://www.cichui.com/the-great-web-framework-shootout/),覺得Bottle和Flask很有意思,所以想瞭解一下。
從下面的範例程式碼看看,你會喜歡哪一種呢?
web.py
import web urls = ( '/(.*)', 'hello')app = web.application(urls, globals())class hello: def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!'if __name__ == "__main__": app.run()
Flask,
from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()
Bottle,
from bottle import route, run@route('/:name')def index(name='World'): return '<b>Hello %s!</b>' % namerun(host='localhost', port=8080)
所以我就選了Bottle了,其他的Django這種大的架構沒有考慮在內,其他語言的也沒有考慮在內。
順便也瞭解了一下Web Framework和MVC到底是什麼東西。
Web FrameWork 和 MVC
現在Web開發有各種技術,各種語言,各種架構。所謂架構,我的理解,就是一個通用的架構,這個架構把重複的工作,或者不變的工作解決,讓開發人員集中在其他方面。現在好像說到Web架構,就會說到MVC。
(MVC詳解:瞭解真正所謂的"架構" http://cjwxd126715.iteye.com/blog/349678)
MVC,Model-View-Control,因為Web上的應用越來越複雜,會有各種資料,會有各種頁面顯示,在最開始,用HTML寫頁面顯示,涉及到互動資料,改變頁面顯示之類的時候,有Javacript或者Java代碼等,嵌入到HTML中,後台也會有各種代碼,處理資料,控制頁面顯示,這使得Web程式結構混亂。於是就希望使得Web開發更有邏輯,結構更清楚,有了MVC。資料,用Model來儲存,View只控制與顯示相關,Control,具體的處理資料。MVC中關於View的原意,“View裡面只應該存在和顯示有關的邏輯,而不應該存在任何其它的邏輯——比如訪問資料庫,調用商務邏輯之類”。
所有的MVC架構中,View部分做到了“只和顯示邏輯相關” 嗎?View能夠脫離資料部分單獨存在嗎?不管是用JSP,Velocity,還是用TagLib,View都必須知道自己所使用的Object的資料結構,必須訪問這些Object的各種屬性,才能把它們顯示出來。這個View和Model分開了嗎?能分開嗎?(MVC的迷思 http://www.iteye.com/topic/6284)
(IoVC,一種新的編程思想 http://www.iteye.com/topic/176066)
IoVC希望通過美工設計在View裡面給每個組件設定一個ID,然後程式員在後台邏輯業務中可以通過ID對view中頁面元素有完全的控制力。Web頁面在美工完成之後,程式員再也無需因為需求的變更或者邏輯的變化,而再重新維護 Web頁面內容。這個也很有意思的。