Rails 3.1 - 如何在vendor/assets/javascript中包含外部JavaScript库?

Don*_*ham 9 javascript ruby-on-rails-3 asset-pipeline

在多个视图中,我包含一个带有此HTML的外部JavaScript库:

<script type="text/javascript" 
        src="http://static.jstree.com/v.1.0pre/jquery.jstree.js">
</script>
Run Code Online (Sandbox Code Playgroud)

在阅读Rails 3.1 Asset Pipeline文档和讨论时,我得到的印象vendor/assets/javascripts是该文件应该被引用.我猜我可以下载文件(jstree.js)的副本并将其放在该目录中.但是,我想将它从项目站点加载,而不是制作它的本地副本.

我将什么放在vendor/assets/javascripts中从远程服务器上提取jstree.js的副本?我是否使用某种远程加载代码创建.js文件?似乎有各种各样的方法和/或混淆如何最好地做到这一点(请参阅这个问题的答案的长列表: 如何在另一个JavaScript文件中包含JavaScript文件?)

这样做是否有"Rails标准"惯例/库/流程?我是一个javascript新手,所以请明确,谢谢.

Ser*_*sev 10

不,你无法将"引用"放在assets文件夹中的远程文件中.您可以下载副本并放入资源,也可以使用<script>标记引用远程文件.

拥有副本并不是一个坏主意,真的.至少,你知道它有效并且文件没有改变(除非你自己改变了).当您加载远程文件时,可能会发生各种各样的惊喜:)

  • 谢谢.想要确保我没有遗漏任何明显的东西,你确认了这一点.不完全同意本地副本是一个好主意(生产除外).图书馆已经学会了永远不会改变的"稳定"版本,所以我不太关心它.如果Rails支持"引用"系统(类似于Gemfile),我可以更容易地在dev/test/production中维护我的各种JS库.我不必手动下载/组织文件,可以避免链轮混乱.对新版本的远程库进行开发/测试非常容易. (3认同)
  • 我不确定在本地存储所有JS文件总是一个好习惯.使用第三方服务,如社交按钮,如果他们更改服务,调试可能会很麻烦. (2认同)