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

Posted

技术标签:

【中文标题】组织大型 javascript 应用程序的工具和最佳实践【英文标题】:Tools and best practices for organizing large javascript applications 【发布时间】:2012-08-02 11:37:39 【问题描述】:

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

我目前的项目包括bootstrap、jquery、jquery-ui、D3、leaflet、crossfilter 和一些不起眼的东西的组合,可以公平地说,虽然应用程序是太棒了,代码已经变得一团糟。特别是 D3 和 crossfilter 的代码非常冗长,参见例如典型例子来源于官方crossfilter demo。

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

我已经避免使用全局变量并尝试使用闭包来组织命名空间,但恐怕我需要一些比这更多的结构。在服务器上有 npm 非常好,但是在浏览器中是否有类似的东西?

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

【问题讨论】:

虽然是一个有趣的问题,但您是否查看过FAQ?这或多或少表明这种类型的问题至少是Off Topic或更可能是Not Constructive @JaredFarrish 可能会链接到应该发布的位置? @tybro0103 - 在其他论坛上?不在这里,SE程序员可能没有,SO上还有什么? SO 并非包罗万象。 【参考方案1】:

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

    使用框架。 Backbone 现在很流行,但也有其他的。它将极大地帮助代码组织。事实上,如果您的应用程序大小不一,框架绝对是避免意大利面条式代码的必要条件。其他流行的框架包括Ember 和Knockout。

    如果您决定不使用这些框架之一,请至少使用模板。比如Mustache或者下划线内置的。

    合并和缩小文件。主要是为了优化加载时间。理想情况下,您会找到一些可以添加到后端的东西来为您完成这项工作。例如,Rails 的“资产管道”使用名为 Sprockets 的东西。

    我确实听到人们对coffeescript 赞不绝口。它并没有真正添加功能,但喜欢它的人说它使他们的代码更干净。

【讨论】:

每一点,我都看到了争论的方法。因此,我的评论投票。请参阅 Not Constructive 的定义以了解其来源。 我同意...我只是想知道是否存在这样的问题确实属于的地方。人们也需要这些问题的答案。【参考方案2】:

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

你可以看看以下内容:

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

【讨论】:

以上是关于组织大型 javascript 应用程序的工具和最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Javascript代码组织数据驱动应用

在大型的 Angularjs 项目中,如何组织您的代码

充满事件处理程序的巨大文件!如何在 AJAX Web 应用程序中组织大型 jQuery 文件?

中大型组织 DevOps 成熟度模型

中大型组织 DevOps 成熟度模型

JavaScript系列文章:React总结之Webpack模块组织