【问题标题】:MVC pattern for sinatra frame worksinatra 框架的 MVC 模式
【发布时间】:2016-06-03 07:52:35
【问题描述】:

我想开始使用“Sinatra”框架进行编码,但我找不到该框架的“MVC”模式。 是“MVC-Sinatra”模式还是框架?

【问题讨论】:

  • Sinatra 非常轻薄,非常适合不需要大量开销的快速操作。如果你需要更多的东西,Rails 可以精简到基础,并提供一个非常强大的 MVC 环境。
  • ...如果你不是 Rails 人,请考虑Hanami。此外,如果您想了解 Rack 背后的概念并提高您的 ruby​​ 知识,请考虑其他超轻量级替代方案:CubaRoda

标签: ruby sinatra


【解决方案1】:

您可能想查看Padrino

这是一个围绕 Sinatra 构建的框架,可为您的项目提供更“类似 Rails”的感觉,但没有太多隐藏的魔力。这是 Sinatra 可以做的一个很好的例子。

虽然如果您需要开始,这很好,但我个人建议您将其用作学习工具,以对您最有意义的方式使用 Sinatra 构建您自己的应用程序。编写一些测试/期望,编写一些代码,通过测试 - 重复 :)

至于 ORM,您还应该查看Sequel,它(恕我直言)非常直接但非常灵活和强大。

【讨论】:

  • 续集很棒。如果您不能使用 Active Record 或想要更通用的东西,强烈推荐。
  • 我可以第二个帕德里诺。我开始构建一个简单的 Posts 应用程序来了解它:github.com/Yorkshireman/padrino_blog 这就像在 Rails 和 Sinatra 之间使用一些东西 - 这是一个很好的平衡。
【解决方案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 - 你所有的宝石都去哪里了。

App Directory - MVC 目录的文件夹 - 模型、视图和控制器。

模型目录 - 保存应用程序背后的逻辑。

控制器目录 - 实现应用程序配置、路由和控制器操作的位置。

Views Directory - 保存将在浏览器中显示的代码。

config.ru - 在构建基于 Rack 的应用程序和使用 rackup/shotgun 启动应用程序服务器时需要 config.ru 文件(ru 代表 rackup)。

配置目录 - 使用environment.rb 文件将应用程序中的所有文件连接到适当的 gem 并相互连接。

公共目录 - 保存您的前端资产 - CSS / JS / 图片等...

规范目录 - 包含您的应用程序的所有测试。

【讨论】:

    【解决方案3】:

    Sinatra 非常简单,您可以将模型和控制器放在一个文件中。

    请参阅here 以获得有关如何操作的非常简短的指南。

    总结几点,

    • 连接到数据库并写入模型。为此,您可以使用 datamapper、activerecord 等。根据我的经验,datamapper 很好,因为您不需要编写迁移。但是activerecord有更好的查询界面。
    • 编写控制器动作/路由
    • 在 /views 目录中写入视图。资产进入 /public 目录。 /views/layout.erb 如果包含 <%= yield %> 则可以用作布局

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多