用于组织大型JavaScript应用程序的工具和最佳实践

我正在开发相当复杂的webapps /仪表板,主要是在Javascript中。 我喜欢在服务器上使用mongo和node,但是在客户端通常会有特定于应用程序的混乱的库和脚本。

我目前的项目包括bootstrap , jquery , jquery-ui , D3 , 传单 , 交叉filter和一些晦涩的东西的组合,这是公平的说,尽pipe应用程序是真棒,代码已成为邪恶的混乱。 特别是D3和crossfilter的代码是相当详细的,例如参见官方crossfilter演示的源代码。

所以这个问题: 组织大型javascript应用程序的好工具和最佳实践是什么?

我已经避免了全局variables,并尝试用闭包来组织命名空间,但是恐怕我需要一些比这更多的结构。 在服务器上有npm,这是相当不错的,但有什么类似的浏览器?

我已经看了require.js , backbone.js和coffeescript ,但是我不太确定这些是否真的能解决问题或者只是增加复杂性。

听起来你已经在正确的道路上,但这里有一些提示:

  1. 使用框架。 骨干现在很stream行,但也有其他的。 这将有助于代码组织。 事实上,如果您的应用程序的大小完全一样,则框架绝对必须避免意大利面代码。 其他stream行的框架包括Ember和Knockout 。

  2. 如果您决定不使用这些框架之一,至less要使用模板。 如胡须或内置的下划线。

  3. 组合和缩小文件。 主要是为了优化加载时间。 理想情况下,你会发现一些添加到你的后端,将为你做这个。 例如,Rails的“资产pipe道”使用了一些被称为Sprockets的东西。

  4. 我确实听到有人对咖啡标签感兴趣 。 它并没有真正增加function,但是那些喜欢它的人说它使得代码更清晰。

我认为一个“模块化”的方法是你所需要的,模块的使用可能会帮助你摆脱混乱。

你可以看看下面的内容:

http://addyosmani.com/largescalejavascript/

http://www.yuiblog.com/blog/2007/06/12/module-pattern/

http://www.2ality.com/2011/04/modules-and-namespaces-in-javascript.html