2012-07-31 53 views
1

如果我使用rails 3使用资产管道来编译所有的 Javascript,这是否意味着我的整个应用程序只能有一个Knockout视图模型?如果不是,我该如何指定哪个视图模型绑定了哪个视图?在教程代码中,每个页面看起来像一个视图模型是绑定的,但这不适用于rails,因为所有JS都是在第一次加载页面时加载的。在Rails 3中敲除3

回答

1

不,你不需要在每一页上都包含所有的javascript!这是一个非常糟糕的主意。

有限制的JavaScript到一个页面中有许多方法,你应该选择一个:
Method 1
Method 2
Method 3

请,请,请不要尝试加载在每一个所有你的JavaScript页。

更新(下面的评论后):

我觉得你在这里混淆了几个不同的事情。

首先,即使您将所有javascript编译为单个gzipped/uglified文件,仍然不会强制您为整个应用程序使用一个基础视图模型。该文件可以包含多个视图模型。他们甚至不需要了解彼此。

其次,rails管道的工作方式是将相关或依赖的javascript文件连接在一起。它这样做是为了减少浏览器为获取每个页面所需的JavaScript而需要的请求数。它不会必然意味着所有的JavaScript变成一个文件。只需为每个页面的javascript 成为一个文件即可。欲了解更多信息,请查看Rails Asset Pipeline Documenation,它对它的工作原理以及如何正确使用它有很好的解释。

第三,这些都不意味着你需要把所有的javascript写成一个文件。事实上,这是一个坏主意。你应该根据功能将你的javascript分成相关的文件。这使它们可以重用,并且可以简化开发工作。

+0

如果所有的JS都通过Gzip进行了简化和压缩,那么比使用方法3特有的JS更好吗?但是,如果我想使用一个大文件,那么Knockout不起作用? – Dean 2012-08-02 00:39:31

+0

@Dean请参阅我的更新。 – Tyrsius 2012-08-02 01:08:30