如何在JavaScript中保存带有大量全局变量的项目

How to save a project with tons of global variables in JavaScript

本文关键字:全局变量 项目 JavaScript 保存      更新时间:2023-09-26

我是一个JavaScript新手,最近接了一个有很多JavaScript文件的项目。之前做这项工作的人似乎一直在使用大量的全局变量,而不是任何设计模式。

到处引用全局变量是很难维护的。并且可以通过直接输入全局变量名在控制台中查看私有信息。

所以我的问题是我应该如何在进一步的发展?我希望我未来的代码更有组织性和模块化。

我读到在JavaScript中没有模块定义and I can

  1. 使用module patternRevealing module pattern

  2. 可能使用Requirejs/commonjs/webpack ?

我不知道,在阅读了文档之后,我仍然很困惑,如果我自己使用module pattern或引入另一个requirejs会有多大区别?他们似乎都能让我的代码模块化。

我有另一个选项供您尝试- es6模块尚未完全支持,但您可以通过在您的项目中包含Babel或Traceur来实现这一点。

Requrejs也是一个不错的选择。我们确实在我们的大型项目中使用了它,其中包含大量的js文件,并且效果非常好。尽管存在一些特定的瓶颈,但它非常清楚地解释了如何避免它们。让我们以Backbonejs为例,它不是AMDish库。我调用一些模块或库,这些模块或库是为正确定义的,需要它们进入其他模块。你可以在这里阅读有关正确制作AMD模块的内容:http://requirejs.org/docs/api.html(实际上你可以在这里看到你需要的一切)。我建议你在对代码做任何事情之前阅读API。虽然有些教程是很好的开始点,但通常他们没有提供具体的东西,它会给你带来很多痛苦,直到你阅读上面的链接。几周前我在这条船上…)

另一个陷阱是,一些库,如underscore.js,在你将其作为AMD模块包含之后,仍然会出现在全局作用域中。不过,如果确实需要的话,您可以寻找替代方法来避免它。

Also requirejs在使用shims添加库依赖项方面做得很好。

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

所以对于所有框架和库来说,使用哪一个是个人偏好的问题。从我的角度来看,如果你想使用requirejs,那就去吧,不要忘记阅读API!