在模块内部需要文件?

Jia*_*ang 9 ruby

我在某人的存储库中看到了以下源代码:

module Twitter
  module Bootstrap
      module Rails
        require 'twitter/bootstrap/rails/engine' if defined?(Rails)
      end
   end
end

require 'less-rails'
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)
Run Code Online (Sandbox Code Playgroud)

资源

我想知道我们放入require模块时有什么区别?

And*_*all 12

就所require涉及的情况而言,没有区别,即require始终将文件加载到全局命名空间中.

应该注意的是,在这种情况下,内部require始终运行,因为Rails在那一点引用它所在的模块,因此if那里的语句将始终评估为true.

这意味着代码相当于可能不那么混乱:

module Twitter
  module Bootstrap
    module Rails
    end
  end
end

require 'twitter/bootstrap/rails/engine'
require 'less-rails'
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)
Run Code Online (Sandbox Code Playgroud)