Rails的新手所以请耐心等待......今天我在研究资产管道时正在查看清单文件(application.js),并对如何读取//= require jquery
等指令感到好奇。这是Sprockets在后台做的事吗?怎么样?为什么必须首先注释掉指令,并添加等号?如果我取消注释指令并在我的broswer中加载application.js文件,我不再看到jquery库内容。只是好奇这是如何在后台工作的。
另外,当我添加自己的自定义css样式表时,我是否在application.css清单文件中添加了require指令,还是添加了样式表链接,例如<link rel="stylesheet" type="text/css" href="mystyle.css">
?或者我两个都做?我假设我不应该直接在清单文件中添加css ......
谢谢!
答案 0 :(得分:1)
不知道你知道多少,所以会尽量详细解释。
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指向特殊情况 - 资产,通常由您的宝石使用(这些文件你永远不会留在你的javascripts / stylesheets文件夹中,所以//= require_tree .
无法看到它们。
当您添加on css文件时,只需将其添加到stylesheets文件夹中,require_tree
就会通知Rails将其包含在大图中。但Rails有一个很好的功能 - 脚手架。您使用命令rails g scaffold User
来构建对象,并且Rails为您创建所有内容 - 视图,控制器,模型,测试(以及谁知道还有什么:))。所以在这种情况下你甚至不需要创建你的css文件,只需要在其中插入css规则,Rails就会找到它require_tree .
与sass文件有点不同的故事:
如果你想使用多个Sass文件,你通常应该使用 Sass @import规则而不是这些Sprockets指令。使用时 Sprockets指令,Sass文件存在于自己的范围内,制作 变量或mixins仅在文档中可用 定义于。
因此,如果您将使用Bootstrap(可能会),这一点也很重要。
希望这有帮助
答案 1 :(得分:1)
如何?为什么必须首先注释该指令
因为这是sprockets指令。它在该文件中的任何js / coffee获得运行机会之前执行得很好。并且css不是&#34; runnable&#34;代码。你如何使这种代码不产生任何错误?你评论它。
...并添加了等号?
将这些特殊指令与其他指令区分开来,&#34;常规&#34;评论,可能在该文件中。
我假设我不应该直接在清单文件中添加css ...
为什么不呢,继续吧。虽然您可能希望将任何自定义代码放在单独的文件中,但出于代码组织的原因。但从技术上讲,这里没有问题。
另外,当我添加自己的自定义css样式表时,我是否在application.css清单文件中添加了require指令
不需要,require_tree .
会找到并包含您的文件。
还是要添加样式表链接,例如
<link rel="stylesheet"type="text/css" href="mystyle.css">
?
不,不要那样做。