这样我就可以充分利用所有已经很好开发的前端工具,比如requirejs,bower和grunt ......只是因为很多这些工具以某种方式在轨道上瘫痪了。
答案 0 :(得分:4)
主要优势:
public
中的脚本不会被消化,因此可以轻松地通过非rails页面加载它们。例如,您在您的站点上使用javascript文件,并且还需要将其加载到另一个(例如,PHP站点),或者需要允许其他人加载您的脚本以用于嵌入式API等等...然后您就可以了。我需要从public
发送。主要缺点:
因为你没有使用资产管道,所以你输了:
因此,无论是对还是错,都有优点和常量。
答案 1 :(得分:2)
只是因为他们中的许多人以某种方式瘫痪了轨道
<强>管道强>
原因是你不打算在Rails 中使用Grunt等。 Rails的资产管道仅用于包含可以预编译的文件。直接在您的应用程序中使用:
资产管道提供了连接和缩小的框架 压缩JavaScript和CSS资产。它还增加了写作能力 这些资产用其他语言和预处理器如 CoffeeScript,Sass和ERB。
这通常意味着编译的第三方JS / CSS文件和您自己的应用程序JS / CSS文件。我不知道像Grunt这样的东西会给这个带来什么好处吗?所有这一切都为您创建了一种管理依赖关系,版本控制和方式的方法。特定资产的来源?
-
公开强>
使用public
文件夹中的文件并不是什么大问题。 做所做的最突出的事情之一就是从file digest processs中排除这些特定文件,允许您使用endpoints(脚本)等可以访问的文件。其他服务(在routes.rb
范围之外)
这方面的一个很好的例子是我们创建了一个分析系统,并将analytics.js
放入public
文件夹,因此所有小部件都可以访问它。无论资产预编译的状态如何,这都允许其他站点访问此文件。
有一点需要注意的是,可能可能有某种方法将“伪”文件存储在公用文件夹中,并将其动态路由(使用ERB)到预编译的等效文件,但是我我没有这方面的经验
-
<强>管道强>
asset pipeline
所述的将资产保留在gwcoffey
内的好处是:
它们将在您设计时进行编译(I.E主要编入application.js
,但也会编入您定义的任何其他文件中)
您无需担心版本控制(每个precompile
基本上都是改善版本的方法而不必担心grunt
等)
您可以根据需要添加任意数量的依赖项 - 这意味着您可以创建一个完全模块化的资产集,可以在整个应用中使用;而不是单个脚本将有自己的依赖基础
<强>建议强>
除非您维护需要依赖项运行的第三方脚本,否则我不建议将Grunt
用于Rails。如果您开发自己的JQuery / Javascript脚本,请务必通过Grunt
等运行它们;但是要在你的应用程序中使用,我会明确指出
希望有所帮助!