组织大型javascript文件

组织大型javascript文件,javascript,jquery,Javascript,Jquery,我已经开始为一个网站积累好几行Javascript代码。到目前为止,所有内容都在一个文件中,并且该文件变得无法维护。如果一行中有错误,则整个文件将中断 我曾尝试将代码拆分为多个文件,但存在一些跨对象的共享方法,如:validateEmail(address) 现在,我将代码组织成对象,如下所示: var ProductPage = { addToCartBtn: "#add-to-cart", init: function() { ProductPage.ini

我已经开始为一个网站积累好几行Javascript代码。到目前为止,所有内容都在一个文件中,并且该文件变得无法维护。如果一行中有错误,则整个文件将中断

我曾尝试将代码拆分为多个文件,但存在一些跨对象的共享方法,如:
validateEmail(address)

现在,我将代码组织成对象,如下所示:

var ProductPage = {
    addToCartBtn: "#add-to-cart",

    init: function() {
        ProductPage.initAddToCartPopup();
        ProductPage.initSidebar();
        ...
    },
    ...
};
然后,我在
$(document.ready
上调用
ProductPage.init()

我的问题是:例如,当将
ProductPage
作为
ContactPage
拆分为一个单独的文件时,我无法访问
ContactPage.validateEmail()
。我相信这是因为我的代码包装在jQuery中:

(function ($) {
    ...
})(jQuery);

有人对他们如何组织大型Javascript系统有见解吗?此外,我还计划将所有这些放在一个文件中并对其进行压缩,从而进行优化。因此,任何既有利于可维护性又有利于优化的方法都是了不起的。

validateEmail
在我看来,类似的方法是功能性的。所谓函数,我的意思是,
y=f(x)
。这些函数不改变状态,而是返回一个输出,该输出是根据传递的输入计算的

您可能希望将所有这些实用程序函数方法保存在一个单独的模块中,并将其标记到一个全局名称空间。使用前,请确保加载这些实用模块


你可以使用<强>依赖管理< /St>./P>可能对你有兴趣。你也可以考虑模块:我真的推荐阅读。但事实上,在

Modular JavaScript
上进行任何适当的搜索都会得到一些不错的结果。然而,这是一个太宽泛的话题;因此,将Typescript和RequireJS相结合可以产生出色的应用程序设计(特别是如果您使用的是需要“类”的MVC框架)。TS编译器的速度有一些问题,需要插件,但需要一些小的解决方法。应该注意的是,即使您中断了脚本,任何错误都会从那时起停止所有代码的执行,将其拆分为多个文件对该问题毫无帮助。