2016-04-28 12 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