5

我想知道是否有人可以简化对 Sinatra 应用程序中 Modular 的解释。我看到 sinatra 中有经典设置和模块化设置,但是通过阅读文档,我不太了解 Modular 在做什么。

如果可能的话,我真的很想在其基本层面上进行解释,以及为什么将其放入profile.rb会改变应用程序的设置(如果是这样的话)。请记住,我是一个新手,所以简单而透彻的解释是最好的!

require 'rubygems'
require 'sinatra'

class Profile < Sinatra::Base

get '/' do
 erb :index
end


end
4

2 回答 2

3

这意味着您可以创建一个或多个 Sinatra 应用程序,就像您在问题中概述的那样,作为同一个超级应用程序中的独立模块,例如使用Rack#map

# config.ru

require 'app1'
require 'app2'

run Rack::Builder.new {
  map "/app1" do
    run App1.new
  end

  map "/app2" do
    run App2.new
  end
}
于 2013-06-15T21:18:53.480 回答
2

在概念层面上,您可以将模块化视为构建块。如果您可以将现有应用程序根据每个块的功能切割成任意数量的块,那么这将是一个模块化设计。另一种思考方式就像 Ruby 中的常规 mixin。无需在许多不同的地方定义相同的方法,您可以在一个模块中定义方法,然后将该模块包含在您需要这些方法的所有地方。您可以将 Sinatra 的模块化视为相同的方式,但您将使用应用程序的模块化部分代替方法,以便在同一应用程序或不同应用程序的不同实例中使用。所以它本质上是构建可重用的组件。

看一下这个stackoverflow 问题,这是一个很好的例子,可以为同一个应用程序的不同实例使用组件。

在您的示例中,这取决于您创建应用程序的目标。使用 Sinatra::Base 时,大多数选项默认禁用,您必须配置要使用的选项。此外,在您的示例中,您需要 require 'sinatra/base' 而不是 require 'sinatra'。本质上 Sinatra::Base 是一个“空白板”,默认情况下大多数选项都是禁用的。

于 2013-06-15T21:29:35.417 回答