我在學習Sinatra,我想知道是否有人知道用Sinatra製作MVC結構的好方法。我有一些想法,但他們似乎太麻煩了。在Sinatra上構建MVC結構
回答
Sinatra已經是「VC」了 - 您的視線與您的路線(控制器)分開。如果你喜歡,你可以選擇將它分成多個文件;如果要了解他們,看到這個答案(我的):
Using Sinatra for larger projects via multiple files
要添加一個「M」(模型),選擇一個數據庫框架。有些人喜歡ActiveRecord。有些人喜歡DataMapper。還有更多,你可以選擇。我個人喜歡並強烈推薦Sequel。我上面鏈接的答案也表明了包含模型的目錄結構和shell。一旦你在你的模型和控制器之間分配適當的邏輯,你就擁有了你的「MVC」。
請注意,MVC不是關於單獨的文件,而是關注點的分離。如果您按照上面的建議設置了Sinatra應用程序,但是讓您的視圖從您的模型中獲取數據,或者您的路線直接生成HTML(而不是通過「幫手」),那麼您確實沒有MVC。相反,你可以在單個文件中完成上述所有操作,並且仍然有一個MVC應用程序。只需將模型中的數據完整性邏輯(更重要的是數據庫本身),視圖中的表示邏輯和可重用的幫助程序以及控制器中的映射邏輯放入其中。
+1「請注意,MVC不是關於單獨的文件,而是關注點的分離」 - 也不是關於單獨的類。正如你所說,每條路線都是一個控制器。 – 2011-11-06 03:34:05
M很容易使用ActiveRecord(或其他)。我有一個models
子目錄,其中的內容在我的Sinatra應用加載時得到require
d。
V也很容易 - 只要把您的觀點。views
子目錄 - 西納特拉會自動在那裏尋找。
C可以,我猜可能是通過將適當分組的Sinatra動作放入不同的文件並在運行時加載它們來處理。
(自白:我還沒有建立一個西納特拉應用程序十分複雜,認爲需要明確的控制器,但 - 哪裏需要那麼多的結構,我已經開始使用Rails)
對於** M **和** V **我毫無疑問同意,事實上我的問題是** C ** eheh。我可以將各種操作分組到不同的模塊中,其中模塊的作用類似於_Controller_。創造一些未來可以通過前端控制器進行擴展的東西會很棒。 – dmarucco 2011-02-25 09:56:46
我想你是對的,當你說_「那裏需要多少結構我已經開始使用Rails」_但我幾乎沒有使用Ruby的新功能(來自PHP和** brr **我公司使用的定製語言) Rails對我來說似乎太多了**。我也想學習_how框架是由_creating_創建的。 – dmarucco 2011-02-25 10:07:52
- 1. Sinatra構建REST API文檔
- 2. 如何構建Sinatra App
- 3. EXTJS4 MVC結構
- 4. MVC結構?
- 5. 構建XML結構
- 6. 在結構體內創建結構體
- 7. 構建一個在線MVC體系結構描述
- 8. phpunit在mvc結構中
- 9. ExtJS的MVC結構
- 10. MVC項目結構
- 11. ASP.NET MVC Web結構
- 12. MVC體系結構
- 13. MVC和鈦,結構
- 14. 從Python結構構建XML
- 15. 從表構建樹結構?
- 16. 在JSP上創建目錄樹結構
- 17. 在iPhone上創建XML數據結構
- 18. 在Tree結構上創建深度流
- 19. 如何構建ASP.NET MVC網站的CAPTCHA驗證體系結構?
- 20. 創建結構
- 21. 在angularjs中構建樹型結構
- 22. 在haskell中構建圖結構
- 23. 基類結構的構建體在C#
- 24. MPI從結構中創建MPI_Datatype包含結構與typedef結構
- 25. 如何在網頁上構建廣告的結構?
- 26. 結構建設構建服務器
- 27. 在結構中創建新的屬性,在上述結構之外
- 28. 在TFS 2012構建服務器上構建MVC 4應用程序
- 29. MVC解決方案結構
- 30. MVC體系結構問題
我可以建議使用另一個框架,只是MVC開箱即用嗎?例如Ramaze。 – iain 2011-02-25 09:54:16
是的,這是一個很好的錯字。但我希望學** **如何製作一個簡單的框架。我想做這個教學練習來提高我的知識,因爲我想知道發生了什麼。我認爲這對Web開發人員來說非常重要。我選擇Sinatra是因爲它是_rack_上最簡單的包裝,並且允許爲我的需求提供最大的靈活性。 – dmarucco 2011-02-25 10:38:25