如何在JavaScript中保存包含大量全局变量的项目

时间:2015-09-03 21:09:43

标签: javascript

我是JavaScript的新手,最近选择了一个包含许多JavaScript文件的项目。以前这个工作的人似乎总是使用很多全局变量而不是任何设计模式。

在各地都很难保持引用全局变量。并且可以通过直接键入全局变量名来在控制台中查看私人信息。

所以我的问题是我应该如何进一步发展?我非常希望我的未来代码更有条理和模块化。

我读到JavaScript中没有模块定义 我可以

  1. 使用module patternRevealing module pattern

  2. 可能使用Requirejs / commonjs / webpack

  3. 我不知道,在阅读了有关文档后,我仍然感到困惑,如果我自己使用module pattern或介绍另一个requirejs,那会有多大影响吗?他们似乎都能够使我的代码模块化。

1 个答案:

答案 0 :(得分:1)

我还有另一种选择 - es6模块尚未完全支持,但您可以通过在项目中加入Babel或Traceur来实现这一目标。

Requrejs也是一个不错的选择。我们在我们的大型项目中使用它有大量的js文件,它工作得很好。虽然存在一些特定的瓶颈,但很清楚地解释了,如何避免这些瓶颈。举个例子,我们来看看Backbonejs,它不是AMDish库。我正在调用一些正确定义的模块或库,以便它们放入其他模块中。您可以在这里阅读有关正确制作AMD模块的信息:http://requirejs.org/docs/api.html(实际上您可以在这里看到所需的一切。我建议您在对代码执行任何操作之前阅读API。虽然一些教程非常有意义,但是通常他们不提供具体的东西,它可以给你带来很多痛苦,直到你阅读上面的链接。我几周前在这艘船..)

另一个缺陷是,在将其包含为AMD模块后,某些库(如underscore.js)仍会出现在全局范围内。如果你真的需要,你仍然可以寻找避免它的解决方法。

此外,requirejs在使用填充程序添加库依赖项方面做得非常好。

所以,是的,你绝对可以使用requrejs,但是有一些观点为什么你不应该 - http://codeofrob.com/entries/why-i-stopped-using-amd.html

因此,与所有框架和库一样,这是个人偏好的问题。从我的角度来看,如果你想使用requirejs - 请继续,不要忘记阅读API!