每當我看到Ruby或Python在Web開發的上下文中討論時,總會有一個框架(Rails for Ruby,Django for Python)。這些框架是否必要?如果沒有,那麼爲什麼這些語言經常在框架內使用,而Perl和PHP不是這樣嗎?你需要一個框架來爲Web編寫Ruby或Python代碼嗎?
回答
簡短的回答是不,他們沒有必要。在ruby中,您有.erb模板,可以使用與您使用PHP頁面相似的方式。您可以使用多種技術(Rails-like框架,模板甚至直接與HTTP庫交談並構建頁面CGI風格)以ruby或Python編寫網站。
像Python的Django或Ruby's Rails這樣的Web框架(有很多)只是提高了PHP或ASP的抽象級別,並且自動化了幾個過程(如登錄,數據庫交互,REST API),這總是一件好事。
我只能對Ruby說話 - 但是,不,您不需要一個框架來在Web上運行基於Ruby的頁面。你確實需要一個支持ruby的服務器,例如運行eruby/erb的Apache。但是,一旦你這樣做了,你就可以像創建RoR一樣創建.rhtml文件,在那裏它處理內嵌的ruby代碼。
「極品」是一個強詞。你當然可以寫一個Python,但我不想。
Python並沒有被設計成像直接的Web腳本語言那樣,所以像連接數據庫這樣常見的web-ish事物並不是原生的,而且框架非常方便。
編輯:mod_python存在Apache,所以如果你只是想寫一些腳本,那麼Python不需要框架。如果你想建立一個完整的網站,我建議使用一個。
絕對不是那些需要的開發框架。但是與大多數開發環境一樣,如果您有支持的框架來引用和構建應用程序,那麼您的生產力將呈指數級增長。如果他們已經對您使用的框架有了核心理解,它還會減少需要讓其他人加快應用程序的培訓。
任何可以「打印」的語言都可以用來生成網頁,但框架可以爲您處理大量的HTML代。它們讓您更專注於內容,更少關注編碼原始HTML的細節。
對於python,答案是否定的,你不需要。你可以很容易地在你的web服務器後面直接編寫python,看看mod_python如何做到這一點。
很多人喜歡框架,因爲它們以可靠的形式提供了大量的樣板代碼,所以您不必親自編寫代碼。但是,像任何代碼項目一樣,您應該根據自己的問題選擇工具和框架。
你當然可以用任何一種語言編寫CGI腳本,並且做一些「原始」的事情。
框架(理想情況下)節省了爲其他人已經處理的事情(會話處理等)編寫一堆代碼的麻煩。
這個決定可能歸結爲你需要做的事情。如果框架具有您需要的功能,爲什麼不使用它。如果框架需要大量修改,那麼推出自己的東西可能會更容易。或者查看一個不同的框架。
Python庫有這樣做的CGI衆多模塊,解析HTML,餅乾,WSGI等:
至於爲什麼:
最合理的事情,我能想到的Perl和PHP是在Web應用程序的框架變得流行之前開發的。因此,「舊」的做事方式一直存在於這些文化中。在框架變得流行後,Ruby和Python變得流行,因此它們一起發展起來。如果你的語言有一個良好的社區支持的框架(或多個),沒有太多的理由嘗試編寫一個Web應用程序沒有一個。
框架是沒有必要的。然而,很多開發人員認爲框架通過自動化很多事情來緩解開發。例如,Django將根據您的數據庫結構爲您創建一個適用於生產的後端。它也可以讓你整合各種插件,如果你選擇。我不太瞭解Rails或Perl框架,但PHP框架(如Zend,Symfony,Code Igniter,CakePHP等)被廣泛使用。
我在我們工作的地方推出了我們自己的PHP框架。
框架?哎呀,如果你使用Python,你甚至不需要Web服務器,你可以在三行代碼中創建一個。
PHP有很多框架。可能多於大多數。在Ruby中,大多數情況下使用Rails,因此您所聽到的,以及Django for Python被提及的更多。 但是用PHP你有很多選擇。
從一個Python的點,你絕對要使用的框架之一。是的,也許可以在沒有它們的情況下編寫一個Web應用程序,但它不會很漂亮。以下是您(可能)結束了從頭開始編寫的幾件事情:
模板:除非你寫一個非常非常快的黑客,你不希望被產生內所有的HTML的你Python代碼 - 這是一個非常糟糕的設計,成爲可維護性的噩夢。
URL處理:拆分URL並標識要運行的代碼不是一項簡單的任務。 Django(例如)提供了一個絕妙的機制,可以從一組正則表達式映射到一組視圖函數。
驗證:滾動自己的登錄/註銷/會話管理代碼是一種痛苦,尤其是當有已經預先寫好的(和測試)提供代碼
錯誤處理:框架已經到位了良好的機制到a)幫助您調試您的應用程序,並b)幫助重定向到正確的404和500頁面。
爲了補充說明,所有框架庫都經過嚴格測試(並經過防火測試)。此外,還有一些人正在開發使用相同代碼庫的社區,所以如果您有任何問題,您可能會找到幫助。總之,你不必這樣做,但是除非你的項目是「一個新的Web框架」,否則你最好使用其中一個現有的框架。
您當然可以使用單獨的無關的庫模塊完成所有這些任務;您不一定必須使用總體框架來控制該地塊。較低級別的WSGI標準使我們足以將這些組件粘合在一起。 – bobince 2008-11-10 13:40:43
這些框架是必需的嗎?
不,他們像任何'框架'一樣,只是爲了加快開發時間,讓程序員的工作更輕鬆。
如果不是,那麼這些語言經常在框架內使用,而Perl和PHP不是這樣嗎?
在使用框架的想法之前,PHP和Perl是構建Web站點的流行語言。像Rails這樣的框架是Ruby給予的。我不確定Python或Ruby在被框架支持之前是否像Web語言那樣常見。
現在,甚至PHP/Perl Web開發應該由一個框架(現在有很多)支持。
- 1. 我需要一個域名來編寫Java代碼嗎?
- 2. 你需要一個用ruby創建一個基本框架?
- 3. Python POST JSON - 是否需要Web框架?
- 4. 編寫代碼,但需要使用一段時間或循環
- 5. 需要一些幫助來編寫一個Python腳本
- 6. Maven - 你需要一個主要的項目來作爲一個圖書館嗎?
- 7. 爲什麼你需要編碼URL?
- 8. 我需要更改一個框架的源代碼冠軍hipped
- 9. 如何編寫一個web框架作爲學習體驗
- 10. 我需要JS框架嗎?
- 11. 你會如何在Ruby和/或Haskell中編寫這個Clojure代碼片段?
- 12. 在哪個文件我需要編寫代碼爲Symfony2的
- 13. 最佳的Python Web框架爲我的API服務器需要
- 14. 我需要一個iOS工具來編碼HTML嗎?
- 15. 你知道一個處理web基礎白板的框架嗎?
- 16. 需要學習一些JavaScript代碼!你能幫我嗎?
- 17. 什麼時候你真的需要web框架上的異步?
- 18. 你什麼時候需要在Ruby中需要一個模塊?
- 19. 你需要python來運行python gtk/pyQt應用程序嗎?
- 20. Python:我需要一個代碼來自動登錄HTTPS網站
- 21. 你需要一個mobilel響應庫嗎?
- 22. 實體框架代碼第一,需要一些建議
- 23. 如何在編寫代碼後使用ruby代碼,是獨立的還是需要在Web應用程序中?
- 24. 在編寫代碼編輯器時需要一些建議
- 25. 如何編寫python來替換下一個perl代碼?
- 26. 我們是否需要編寫代碼來排序gridView?
- 27. 需要編寫Matlab代碼來解決下面的等式
- 28. 你是否曾經需要用匯編語言編寫真正的代碼?
- 29. 你可以爲Android代碼編譯Python嗎?
- 30. 你可以用一個框架的POST來調用表單嗎
哇......很多很好的答案,很難選擇一個「接受」,所以我選擇了一個足夠全面的答案來回答這個問題,並且足以解決我提到的所有語言。感謝大家! – 2008-10-06 16:28:33