ruby-on-rails - Rails - 理解 application.js 和 application.css

标签 ruby-on-rails ruby gem

rails 新手。只是想了解\assests 目录中的这两个文件。

例如,application.js 文件有如下行:

//= require jquery
//= require jquery_ujs
//= require_tree .

我理解 require_tree 。 只是将所有 JS 文件添加到当前目录中。根据上下文,我可以看出 require jquery 添加了 jQuery 库。但是它从哪里得到这些 jQuery 库呢?我没有在我的 Assets 文件夹中看到任何 jquery.js 文件——或者直接在我的整个应用程序中没有看到任何 jquery.js 文件?

同样,我正在按照一些说明安装 Twitter Bootstrap (http://rubydoc.info/gems/bootstrap-sass-rails/2.3.2.0/frames)。将我的 gem 添加到 Gemfile 后,我需要将 //= require bootstrap 添加到 application.js 文件,并将 @import 'bootstrap' 添加到我的 application.css 和现在它神奇地起作用了!!!为什么!?我在任何地方都找不到这些文件

谢谢!

最佳答案

application.css 和 application.js 不是常规的 css 和 js 文件(它们可能是,但它们有不同的用途

两者都是 list 文件,告诉 Assets 管道以及 js 的链轮

因此,正如 Michael Durrant 的回答正确指出的那样,http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives将是正确的地方

但根据您的其他问题,您似乎遗漏了一个非常关键的难题

Rails 主要使用 Gem。 Gems 是一段 ruby​​ 代码,您可以通过 bundler 将其添加到您的 Rails 应用程序中

当你添加像 bootstrap gem 这样的 gem 时,它会被安装(默认情况下在你安装了 ruby​​ 的 gems 库中 - 类似于 Ruby193\lib\ruby\gems\1.9.1\gems)

如果你去那里寻找 bootstrap gem,你会找到应用程序中包含的 css 和 js 文件,以及 list 文件中包含的 jquery 和 jquery_ujs

因为 gems 是和 rails 一起安装的,所以 rails 不介意文件在哪里(只要它知道文件在哪里)。

所以 list 文件告诉 rails “嘿,按照这个特定的顺序为我包含这些文件” 这就是为什么您可以包含您编写的文件,这些文件位于 Assets 文件夹中,并且文件包含在 gem 中

如果您不包含 list 中的文件,但仍然安装等同于编写 css 或 js 文件的 gem,将其放置在某个文件夹中并且不告诉 rails 它存在。当您通过 list 文件告诉 Rails 它在哪里时,它会将它包含在 Assets 编译过程中,您可以定期访问它。

或者,您不必为 Assets 使用 Assets 管道

你可以用常规的方式包含css和js文件

 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

只需将您的文件托管在某个地方并将其指向文件,但 Assets 管道有很多优点,当您了解它时,它确实会让您的生活更轻松

关于ruby-on-rails - Rails - 理解 application.js 和 application.css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826236/

相关文章:

ruby-on-rails - 在 Markdown 中嵌入 YouTube 视频?

ruby-on-rails - rails gem : Running All Generators for given Namespace

ruby-on-rails - 你如何从另一个模型自动完成?

ruby-on-rails - Rails 3 在使用查找时验证包含(如何处理或 lambda)

ruby-on-rails - 多进程VS多线程服务器最受益于什么?

ruby - 多个匹配项的公共(public)前缀

ruby - 如何将 rails 应用程序(服务器代码)和 ruby​​ gem(客户端代码)组合到一个通用包中?

ruby-on-rails - gem install rails 错误:执行 gem 时......(Errno::EACCES)

mysql - Rails 5 和 Ruby 2.3.3 加载 libmysql.dll 失败

ruby-on-rails - 如何创建这个模型元方法?