我是JavaScript的新手,最近选择了一个包含许多JavaScript文件的项目。以前这个工作的人似乎总是使用很多全局变量而不是任何设计模式。
在各地都很难保持引用全局变量。并且可以通过直接键入全局变量名来在控制台中查看私人信息。
所以我的问题是我应该如何进一步发展?我非常希望我的未来代码更有条理和模块化。
我读到JavaScript中没有模块定义 我可以
使用module pattern
或Revealing module pattern
可能使用Requirejs
/ commonjs
/ webpack
?
我不知道,在阅读了有关文档后,我仍然感到困惑,如果我自己使用module pattern
或介绍另一个requirejs
,那会有多大影响吗?他们似乎都能够使我的代码模块化。
答案 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!