Rails资产使用说明

问题描述:

我是rails新手,对于资产的加载方式我有点困惑。我可以让事情有效,但我想了解幕后真正发生的事情。Rails资产使用说明

我一直在阅读文档,但有些内容我完全不理解。

清单文件

,混淆我是清单文件使用的第一件事。

举例来说,如果在我的应用程序/资产/ Java脚本/ application.js中的文件,我有:

//= require_tree . 

Rails文档说:

告诉链轮递归包括在 所有JavaScript文件指定目录输入到输出中

什么是不清楚的是哪个目录?应用程序/资产/ JavaScript的/?

这是否意味着如果我在app/assets/javascripts /中添加文件,它将被加载并提供服务?

如果我再补充一点需要补充,我需要添加到清单文件的文件example.js宝石:

//= require example.js 

但如果//= require_tree已经加载并服务于应用程序/资产的文件,为什么这是必要的/ javascripts /这是我把我的example.js的位置?好吧,允许我指定顺序,如果以后我添加更多需求。但除此之外呢?

HTML文件

然后脚本被列入application.html.erb

<%= javascript_include_tag ('application'), 'data-turbolinks-track' => true %> 

我明白这上面加载,因此在其中的各种//= require提到的application.js文件。

有时会发生需要脚本的特定文件:

<script src="js/example.js"></script> 

是这种情况不会<script src="js/example.js"></script>做的//= require example.js同样的事情?

PUBLIC VS APP资产

我明白,如果我把我的example.js公共文件/文件夹的资产就不会被编译,而是单独提供。我为什么要这么做?如果在连接和编译文件时没有正确地提供文件,并且仅在分离服务时才能正常工作,是否合理?换句话说,如果我在app/assest中包含一个.js文件,并且它有加载或破坏的问题,是否值得尝试从那里删除它并将它移动到公共/资产,或者这样做没有意义吗?

APP资产VS卖方资产

在这情况下,我应该添加一个文件到供应商的资产,而不是应用程序的资产?将它添加到某个地方或另一个地方有什么区别? 而在我的供应商/ assets/javascripts中,我只有一个空的.keep文件。所以,应用程序/资产上的清单文件就是如此。这个文件夹中的文件如何引用呢?

对于采用路径参数的指令,可以指定 逻辑路径或相对路径。相对路径以./和 相对于当前文件位置的引用文件开头。

所以//= require_tree .告诉链轮加载任何文件app/assets/javascripts/,并将它们连接成的application.js。

是这种情况不会<script src="js/example.js"></script> 做的// =需要example.js同样的事情?

编号Rails将资产作为独立文件在开发中,以便在发生错误时获得有意义的行号和文件引用。

在生产过程中,它将连接并缩小对性能重要的资产。

链轮不会检查脚本标记的视图/布局。所以前者会导致两个请求。

我明白,如果我把对公共/资产我example.js文件夹 它不会被编译,而是单独提供。我为什么要做 ?

公共目录位于服务器Web根目录下。由于这些文件没有太多的干预,所以它是一个很好的地方,例如错误页面,或者需要静态名称而没有缓存破解指纹的资产。

我应该在哪种情况下向供应商资产添加文件而不是应用 资产?将它添加到某个地方或 另一个有什么区别?

/vendor/assets是放置不是由您创建或不属于应用程序的资产的地方。两者都被添加到链轮负载路径中,所以结果是相同的。它只是一个代码组织的问题。