使用 Rails 时,如何在清单文件中读取 Sprockets 指令?



Rails新手,所以请耐心等待...我今天在研究资产管道时正在查看清单文件(应用程序.js),并且很好奇如何读取//= require jquery等指令。这是链轮在后台做的事情吗?如何?为什么必须先注释掉指令,并添加等号?如果我取消注释指令并在浏览器中加载应用程序.js文件,则不再看到jquery库内容。只是好奇这在后台是如何工作的。

另外,当我添加自己的自定义 css 样式表时,我是要在应用程序.css清单文件中添加 require 指令,还是添加样式表链接,例如<link rel="stylesheet" type="text/css" href="mystyle.css">?还是我两者兼而有之?我假设我不应该直接在清单文件中添加 css......

谢谢!

不知道你知道多少,所以会尝试详细解释。

Rails将我们的资产(如图像,css,js文件)存储在不同的地方,因此它都是有序的,对我们开发人员来说更好。这就是所谓的Assed Pipeline。当 Rails 加载这些资产(例如 css 文件)时,它会从我们所有的应用程序文件中创建一个大文件,以避免多次调用。Manifest就像一个地图或Rails的规则,哪些文件要包含在那个大的css文件中,这个*=告诉Rails到底要包含什么(我认为它是一个Rails语法)。所以当你有这样的东西时:

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

require_tree .告诉 Rails 从 javascripts 文件夹中获取所有文件,而//= require jquery和其他人将 Rails 引导到特殊情况- 资产,通常由您的 gem 使用(那些文件你永远不会保存在 javascripts/stylesheet 文件夹中,所以//= require_tree .看不到它们)。

当你在css上添加文件时,你只需将其添加到样式表文件夹中,require_tree通知Rails将其包含在大图片中。但是 Rails 有一个不错的功能——脚手架。您可以使用命令rails g scaffold User搭建对象的脚手架,Rails 为您创建一切 - 视图、控制器、模型、测试(以及谁知道还有什么:))。所以在这种情况下,你甚至不需要创建你的css文件,只需在其中插入css规则,Rails就会找到它,require_tree .

sass文件的故事有点不同:

如果要使用多个 Sass 文件,通常应使用 Sass @import规则而不是这些 Sprockets 指令。使用时 链轮指令,Sass 文件存在于它们自己的范围内,使 变量或混合仅在文档中可用 定义在。

因此,如果您将使用Bootstrap(可能会),这也是一个重要的信息。

希望这有帮助

如何?为什么必须先注释掉指令

因为这是链轮指令。在该文件中的任何 js/coffee 有机会运行之前,它就已经执行好了。而且css根本不是"可运行"的代码。如何使这种代码不会产生任何错误?你评论它。

。并添加了等号?

将这些特殊指令与其他可能在该文件中的"常规"注释区分开来。

假设我不应该直接在清单文件中添加 css......

为什么不呢,继续。尽管出于代码组织的原因,您可能希望将任何自定义代码放在单独的文件中。但从技术上讲,这里没有问题。

另外,当我添加自己的自定义 css 样式表时,我是否在应用程序.css清单文件中添加 require 指令

没必要,require_tree .会找到并包含您的文件。

还是添加样式表链接,例如<link rel="stylesheet"type="text/css" href="mystyle.css">

不,不要那样做。

最新更新