Rails:将脚本和样式表直接放在公共文件夹中的优点/缺点是什么?

时间:2014-06-04 02:00:42

标签: ruby-on-rails requirejs assets

这样我就可以充分利用所有已经很好开发的前端工具,比如requirejs,bower和grunt ......只是因为很多这些工具以某种方式在轨道上瘫痪了。

2 个答案:

答案 0 :(得分:4)

主要优势:

  1. 以这种方式加载第三方脚本更容易。总是有可能,有时很容易将这些通过资产管道,但它也经常是乏味的,你失去了凉亭。
  2. public中的脚本不会被消化,因此可以轻松地通过非rails页面加载它们。例如,您在您的站点上使用javascript文件,并且还需要将其加载到另一个(例如,PHP站点),或者需要允许其他人加载您的脚本以用于嵌入式API等等...然后您就可以了。我需要从public发送。
  3. 主要缺点:

    因为你没有使用资产管道,所以你输了:

    1. 资产合并和压缩。资产管道CSS和Javascript将分别加载到单个HTTP请求中,并且内容可以缩小。这会使您网站上的第一页加载速度加快,特别是如果您有大量客户端代码或网站需要为偶尔的访问者提供超级活动。
    2. 消解。资产管道可以保护您100%免受缓存变幻莫测,并可能让不同的用户看到您的网站使用不同版本的资产。部署后,每个访问者都将获得新资产。
    3. 相对自动的etagging。一旦这些访问者获得新资产,他们的客户通常会将其缓存很长时间。 Rails可以让资产基本上永远缓存,因为消化可以确保你以后不再受到惩罚。
    4. 因此,无论是对还是错,都有优点和常量。

答案 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等运行它们;但是要在你的应用程序中使用,我会明确指出

希望有所帮助!