为什么使用gem来提供资产而不是供应商文件?

我对Rails相对较新,我有一个关于从gem提供资产与仅将文件加载到资产管道中的问题。

据我所知,它们几乎完全相同,因为它们都使资产管道中的文件可用于清单中。

提供类似服务有什么好处

 gem'jquery-rails' 

作为gem,而不仅仅是放

  /vendor/assets/javascripts/jQuery.js 

在供应商资产中并以这种方式加载?

优点是您不必将文件添加到您的仓库并管理更新,您更新gem并更新了依赖项。 他们还可以添加帮助程序以更轻松地使用资产。

并非所有JS / CSS项目都与资产管道开箱即用兼容,因此有时gem也会为您工作。

仅仅因为文件被提供给客户端并没有使它与应用程序中的任何其他依赖项有很大的不同。

gem包括Rails的不引人注目的javascript以及jQuery本身。 它还允许您在测试中使用assert_select_jquery

jquery-rails是gem包含jquery.js,jquery_ujs.js的js文件。 如果你不包含jquery-rails,那么你同时包含了jquery.js和jquery_ujs.js.If你没有使用jquery-rails的gem,你已经手动跟踪jquery.us用于jquery_ujs.js的版本。 目前,这些依赖关系管理由gem’jquery-rails’负责。

优点:

  1. 当您获得新版本的jquery时,您无需手动复制它们,gem将确保仅添加最新代码。

  2. 请查看以下链接: https : //github.com/rails/jquery-rails/blob/master/lib/jquery/assert_select.rb#LC48它提供了几种在测试代码时有用的方法。