Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将许多JS文件与Rails资产管道相结合_Javascript_Ruby On Rails_Namespaces_Asset Pipeline - Fatal编程技术网

Javascript 将许多JS文件与Rails资产管道相结合

Javascript 将许多JS文件与Rails资产管道相结合,javascript,ruby-on-rails,namespaces,asset-pipeline,Javascript,Ruby On Rails,Namespaces,Asset Pipeline,我正在从Rails 3.0.20升级到Rails 3.1.10,这是我期待已久的升级。(稍后我将升级到3.2,但我想先在3.1中对我的代码库进行更大的更改。我没有测试套件,所以请您耐心等待,因为我克服了不少技术债务。谢天谢地,该应用程序没有那么大或复杂。) 我的应用程序中的各种视图都有单独的JS文件。现在,资产管道希望将所有这些合并到一个文件中。问题是,我的许多变量和函数名发生冲突,通常只会导致问题 我的假设是,我需要在这里使用某种名称空间,然后在需要它的页面上的特定名称空间中初始化代码 有没有

我正在从Rails 3.0.20升级到Rails 3.1.10,这是我期待已久的升级。(稍后我将升级到3.2,但我想先在3.1中对我的代码库进行更大的更改。我没有测试套件,所以请您耐心等待,因为我克服了不少技术债务。谢天谢地,该应用程序没有那么大或复杂。)

我的应用程序中的各种视图都有单独的JS文件。现在,资产管道希望将所有这些合并到一个文件中。问题是,我的许多变量和函数名发生冲突,通常只会导致问题

我的假设是,我需要在这里使用某种名称空间,然后在需要它的页面上的特定名称空间中初始化代码

有没有标准的方法可以做到这一点?或者,总的来说,有更好的方法吗


需要澄清的是:我还没有准备好切换到CoffeeScript。

资产管道将允许每个视图使用单独的js文件。在app/assets/javascripts中,每个视图都有一个单独的js文件。假设你的模特有书和杂志。在app/assets/javascripts中,您可以为每个模型/视图设置books.js和magazies.js(或coffee)


另外,如果您没有观看过,请查看一下。

资产管道的关键是清单文件。默认情况下,Rails在

app/assets/javascripts/application.js
此清单使用指令声明资产源文件中的依赖项。这些指令之一是

require_tree
它的工作原理类似于require目录,但递归地要求所有子目录中的所有文件。在我的Rails应用程序中,生成的
application.js
包含

//= require_tree .
这需要JavaScript资产文件夹中的所有文件。通过删除它,您的JavaScript文件不再合并为一个。然后,每个视图都需要JavaScript文件。问题回答了这个问题



话虽如此,请重新考虑您的计划。毕竟Rails这样做不是为了让您烦恼,而是为了一个目的。为了提高效率,您应该拥有尽可能少的HTTP请求。如果预先加载所有JavaScript代码,您可能会有更好的性能,例如由于缓存。

此答案没有说明OP所关心的变量/函数名冲突。此答案没有说明OP所关心的变量/函数名冲突。