2008-10-06 35 views
6

每當我看到Ruby或Python在Web開發的上下文中討論時,總會有一個框架(Rails for Ruby,Django for Python)。這些框架是否必要?如果沒有,那麼爲什麼這些語言經常在框架內使用,而Perl和PHP不是這樣嗎?你需要一個框架來爲Web編寫Ruby或Python代碼嗎?

+2

哇......很多很好的答案,很難選擇一個「接受」,所以我選擇了一個足夠全面的答案來回答這個問題,並且足以解決我提到的所有語言。感謝大家! – 2008-10-06 16:28:33

回答

3

簡短的回答是不,他們沒有必要。在ruby中,您有.erb模板,可以使用與您使用PHP頁面相似的方式。您可以使用多種技術(Rails-like框架,模板甚至直接與HTTP庫交談並構建頁面CGI風格)以ruby或Python編寫網站。

像Python的Django或Ruby's Rails這樣的Web框架(有很多)只是提高了PHP或ASP的抽象級別,並且自動化了幾個過程(如登錄,數據庫交互,REST API),這總是一件好事。

4

我只能對Ruby說話 - 但是,不,您不需要一個框架來在Web上運行基於Ruby的頁面。你確實需要一個支持ruby的服務器,例如運行eruby/erb的Apache。但是,一旦你這樣做了,你就可以像創建RoR一樣創建.rhtml文件,在那裏它處理內嵌的ruby代碼。

3

「極品」是一個強詞。你當然可以寫一個Python,但我不想。

Python並沒有被設計成像直接的Web腳本語言那樣,所以像連接數據庫這樣常見的web-ish事物並不是原生的,而且框架非常方便。

編輯:mod_python存在Apache,所以如果你只是想寫一些腳本,那麼Python不需要框架。如果你想建立一個完整的網站,我建議使用一個。

0

絕對不是那些需要的開發框架。但是與大多數開發環境一樣,如果您有支持的框架來引用和構建應用程序,那麼您的生產力將呈指數級增長。如果他們已經對您使用的框架有了核心理解,它還會減少需要讓其他人加快應用程序的培訓。

0

任何可以「打印」的語言都可以用來生成網頁,但框架可以爲您處理大量的HTML代。它們讓您更專注於內容,更少關注編碼原始HTML的細節。

0

對於python,答案是否定的,你不需要。你可以很容易地在你的web服務器後面直接編寫python,看看mod_python如何做到這一點。

很多人喜歡框架,因爲它們以可靠的形式提供了大量的樣板代碼,所以您不必親自編寫代碼。但是,像任何代碼項目一樣,您應該根據自己的問題選擇工具和框架。

0

你當然可以用任何一種語言編寫CGI腳本,並且做一些「原始」的事情。

框架(理想情況下)節省了爲其他人已經處理的事情(會話處理等)編寫一堆代碼的麻煩。

這個決定可能歸結爲你需要做的事情。如果框架具有您需要的功能,爲什麼不使用它。如果框架需要大量修改,那麼推出自己的東西可能會更容易。或者查看一個不同的框架。

Python庫有這樣做的CGI衆多模塊,解析HTML,餅乾,WSGI等:

http://docs.python.org/library/index.html

1

至於爲什麼

最合理的事情,我能想到的Perl和PHP是在Web應用程序的框架變得流行之前開發的。因此,「舊」的做事方式一直存在於這些文化中。在框架變得流行後,Ruby和Python變得流行,因此它們一起發展起來。如果你的語言有一個良好的社區支持的框架(或多個),沒有太多的理由嘗試編寫一個Web應用程序沒有一個。

1

框架本身並不是必需的,但它確實可以加速開發並幫助您編寫「更好」的代碼。在PHP中,肯定有框架可以像CakePHP一樣使用,在Perl中也有很多,如MasonCatalyst

1

框架是沒有必要的。然而,很多開發人員認爲框架通過自動化很多事情來緩解開發。例如,Django將根據您的數據庫結構爲您創建一個適用於生產的後端。它也可以讓你整合各種插件,如果你選擇。我不太瞭解Rails或Perl框架,但PHP框架(如Zend,Symfony,Code Igniter,CakePHP等)被廣泛使用。

我在我們工作的地方推出了我們自己的PHP框架。

2

框架?哎呀,如果你使用Python,你甚至不需要Web服務器,你可以在三行代碼中創建一個。

0

PHP有很多框架。可能多於大多數。在Ruby中,大多數情況下使用Rails,因此您所聽到的,以及Django for Python被提及的更多。 但是用PHP你有很多選擇。

List of web application frameworks

3

從一個Python的點,你絕對要使用的框架之一。是的,也許可以在沒有它們的情況下編寫一個Web應用程序,但它不會很漂亮。以下是您(可能)結束了從頭開始編寫的幾件事情:

  • 模板:除非你寫一個非常非常快的黑客,你不希望被產生內所有的HTML的你Python代碼 - 這是一個非常糟糕的設計,成爲可維護性的噩夢。

  • URL處理:拆分URL並標識要運行的代碼不是一項簡單的任務。 Django(例如)提供了一個絕妙的機制,可以從一組正則表達式映射到一組視圖函數。

  • 驗證:滾動自己的登錄/註銷/會話管理代碼是一種痛苦,尤其是當有已經預先寫好的(和測試)提供代碼

  • 錯誤處理:框架已經到位了良好的機制到a)幫助您調試您的應用程序,並b)幫助重定向到正確的404和500頁面。

爲了補充說明,所有框架庫都經過嚴格測試(並經過防火測試)。此外,還有一些人正在開發使用相同代碼庫的社區,所以如果您有任何問題,您可能會找到幫助。總之,你不必這樣做,但是除非你的項目是「一個新的Web框架」,否則你最好使用其中一個現有的框架。

+0

您當然可以使用單獨的無關的庫模塊完成所有這些任務;您不一定必須使用總體框架來控制該地塊。較低級別的WSGI標準使我們足以將這些組件粘合在一起。 – bobince 2008-11-10 13:40:43

1

這些框架是必需的嗎?

不,他們像任何'框架'一樣,只是爲了加快開發時間,讓程序員的工作更輕鬆。

如果不是,那麼這些語言經常在框架內使用,而Perl和PHP不是這樣嗎?

在使用框架的想法之前,PHP和Perl是構建Web站點的流行語言。像Rails這樣的框架是Ruby給予的。我不確定Python或Ruby在被框架支持之前是否像Web語言那樣常見。

現在,甚至PHP/Perl Web開發應該由一個框架(現在有很多)支持。

相關問題