0

这让我很沮丧。我希望有人可以帮助我。

在我的 application.js 文件中,我有以下内容:

//= require jquery
//= require jquery_ujs
//= require jquery.remotipart
//= require jquery-ui
//= require jquery.purr
//= require jquery.slides
//= require best_in_place
//= require twitter/bootstrap
//= require_tree .

我是否需要在我的一个或所有页面特定的 Javascript 中包含以下(或其等效项)?我知道在生产中它们都被合并到一个带有资产管道的文件中,所以......我是否会引导一个文件,没有文件,所有文件都带有这个......?

jQuery ->

我发现在所有特定于资源的 JavaScript 的顶部添加“jQuery ->”或“$ ->”几乎可以工作。我的问题是我有一个资源,除非我删除“jQuery->”,否则什么都不起作用。由于该资源的 JS 文件与另一个资源的 JS 文件用于函数等交互。我也必须从中删除“jQuery ->”,这会导致意外行为。

只是想知道资产管道中的 js 文件的最佳实践是什么,并让它们一起工作。

谢谢

4

1 回答 1

1

使用时不能依赖加载资源的顺序require_tree。因此,如果您要使用相互依赖的 javascript 文件,请确保以正确的顺序要求它们。

所以而不是:

//= require_tree .

利用

//= require posts
//= require comments

然后调用函数或您在评论 javascript 文件中的帖子中定义的任何内容。

此外,当您像我假设的那样使用咖啡脚本时,您必须使用命名空间才能使变量在整个应用程序中可用。

举个例子。

post.js.coffee

$ ->
  window.my_super_variable = 'super'

  window.my_super_function = (message) ->
    alert(message)

评论.js.coffee

$ ->
  my_super_variable += ' awesome'

  my_super_function(my_super_variable)

如果您在定义变量或函数时不使用window它们,它们将无法全局访问。

于 2013-05-03T08:20:16.490 回答