【问题标题】:Rails 3.1 - How do you include external javascript libraries in vendor/assets/javascript?Rails 3.1 - 如何在供应商/资产/javascript 中包含外部 javascript 库?
【发布时间】:2012-03-30 07:13:28
【问题描述】:

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

<script type="text/javascript" 
        src="http://static.jstree.com/v.1.0pre/jquery.jstree.js">
</script>

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

我应该在 vendor/assets/javascripts 中添加什么来从远程服务器上提取 jstree.js 的副本?我是否使用某种远程加载代码创建 .js 文件?关于如何最好地做到这一点似乎有各种各样的方法和/或混淆(请参阅这个问题的答案的长列表:How do I include a JavaScript file in another JavaScript file?。)

是否有执行此操作的“Rails 标准”约定/库/流程?我是 javascript 新手,所以请明确一点,谢谢。

【问题讨论】:

    标签: javascript ruby-on-rails-3 asset-pipeline


    【解决方案1】:

    不,您无法在资产文件夹中放置对远程文件的“引用”。您可以下载副本并放入资产中,也可以使用&lt;script&gt; 标签引用远程文件。

    拥有一份副本并不是一个坏主意,真的。至少,您知道它可以工作并且文件没有更改(除非您自己更改)。当您加载远程文件时,可能会发生各种意外:)

    【讨论】:

    • 谢谢。想确保我没有遗漏一些明显的东西,你证实了这一点。不太同意拥有本地副本是一个好主意(生产中除外)。图书馆已经学会了拥有永不改变的“稳定”版本,所以我不太担心这一点。如果 Rails 支持“参考”系统(类似于 Gemfile),我可以更轻松地在 dev/test/production 中维护我的各种 JS 库。我不必手动下载/组织文件,并且可以避免 sprockets 混淆。针对新版本的远程库进行开发/测试将非常容易。
    • 我不确定将所有 JS 文件存储在本地是否总是一个好习惯。使用第三方服务,如社交按钮,如果他们更改服务,调试可能会很痛苦。
    • +1 在 Gemfile 上用于远程存储的 JS 文件。 @Don 甚至可以包括在每次部署时远程下载它们,但通过 sprocket 在本地为它们提供服务。
    猜你喜欢
    • 2011-09-20
    • 2019-11-15
    • 2023-04-02
    • 2012-01-23
    • 2012-02-04
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多