2016-04-28 42 views
4

我想用'Sinatra'框架開始編碼,但是我找不到這個框架的'MVC'模式。 是「MVC-Sinatra」模式還是框架?sinatra框架工作的MVC模式

+0

Sinatra非常輕薄,對於不需要太多開銷的快速事物來說非常棒。如果您需要的不僅僅是這些,Rails可以被剝離爲基礎,並提供一個非常強大的MVC環境。 – tadman

+0

...而且你不是Rails人,請考慮[Hanami](http://hanamirb.org/)。另外,如果您想了解[Rack](http://rack.github.io/)背後的概念並提高您的Ruby知識面,請考慮以下其他超輕量級替代方案:[古巴](http:// cuba .is /)和[Roda](http://roda.jeremyevans.net/) – microspino

回答

2

Sinatra是一個輕量級圖書館,其目的是保持你的方式,讓你敞開大門,包括或創建你需要每個項目。這就是說,你可以很容易地在Sinatra之上創建自己的MVC,並將ActiveRecord,DataMapper,Sequel等合併到你的模型中。這裏有一個樣本結構 -

├── Gemfile 
├── README.md 
├── app 
│ ├── controllers 
│ │ └── application_controller.rb 
│ ├── models 
│ │ └── model.rb 
│ └── views 
│  └── index.erb 
├── config 
│ └── environment.rb 
├── config.ru 
├── public 
│ └── stylesheets 
└── spec 
    ├── controllers 
    ├── features 
    ├── models 
    └── spec_helper.rb 

的Gemfile - 所有你的寶石去。

應用程序目錄 - MVC目錄的文件夾 - 模型,視圖和控制器。

模型目錄 - 擁有您的應用程序的邏輯。

控制器目錄 - 執行應用程序配置,路線和控制器操作。

視圖目錄 - 保存將顯示在瀏覽器中的代碼。

config。ru - 構建基於Rack的應用程序並使用rackup/shotgun啓動應用程序服務器時,需要使用config.ru文件(ru代表rackup)。

配置目錄 - 瓦特/ environment.rb fileto在應用程序中的所有文件連接到相應的寶石和給對方。

公共電話簿 - 握着你的前端資產 - CSS/JS /圖片等

規格目錄 - 包含應用程序的任何測試。

3

Sinatra非常簡單,您可以將模型和控制器放在一個文件中。請參閱here瞭解如何操作。

總結一些要點,

  • 連接到數據庫,並編寫模型。你可以使用datamapper,activerecord等。根據我的經驗,datamapper非常好,因爲您不需要編寫遷移。但activerecord具有更好的查詢界面。
  • 寫入控制器動作/路由
  • 在/ views目錄中寫入視圖。資產進入/ public目錄。 /views/layout.erb可如果它包含<%= yield %>
+0

有關如何使用獨立機架安裝的Sinatra類作爲基於Sinatra的較大應用程序的控制器的想法:http:// stackoverflow .com/questions/30421971/how-to-map-routes-to-controllers-in-sinatra/30470141#30470141 – photoionized

4

你可能想看看Padrino

這是圍繞西納特拉,提供「像Rails的」更建立了一個框架,可以作爲佈局感覺你的項目,但沒有那麼多隱藏的魔法。這是Sinatra可以完成的一個很好的例子。

雖然這很好,如果你需要剛剛起步,我個人建議你使用它作爲一種學習工具,以最有意義的方式使用Sinatra構建自己的應用程序。寫一些測試/期望,編寫一些代碼,通過測試 - 重複:)

至於ORM,你也應該結賬Sequel哪個(imho)非常直接,但非常靈活和強大。

+0

續集很棒。強烈建議如果你不能使用Active Record或想要更多功能的東西。 – tadman

+0

我可以第二個帕德里諾。我開始構建一個簡單的Posts應用程序來了解它:https://github.com/Yorkshireman/padrino_blog這就像在Rails和Sinatra之間使用一些東西 - 這是一個很好的平衡。 – Andy