所以我现在已经构建了单页Web应用程序一段时间了,我一直在以极其模块化的方式编写所有代码。我一直在使用所有模块的javascript模块模式,我的主API使用揭示模块模式为插件和其他模块公开一个小API。
所以即使我一直在写这样的代码,有人提到我应该使用require.js,因为它提供了更好的模块化方法。
我认为require.js并没有真正使它更加模块化,所以我的下一个想法是require.js如何分离出依赖关系。 Require.js强制您在每个模块文件中命名依赖项。但这对我来说似乎是我必须为每个模块做的任务,我有很多模块。目前我的所有文件都在我的grunt构建过程中连接成一个单独的javascript文件,所以我的所有文件都在开始时加载。我需要在开始时加载大部分模块,所以这样做是有意义的。
所以我的问题是......我是否应该使用require.js,即使我的代码是模块化的,我的所有文件都连接在一起并在开始时加载?我是否需要担心依赖关系或加载订单?处理这种情况时的任何帮助/建议或以前的经验都会有所帮助。感谢
答案 0 :(得分:4)
您是否有烦恼以正确的顺序放置<script>
标签以正确处理依赖关系?
有一个requirejs配置文件,你声明第三方代码和你自己的代码依赖树是一种比你自己声明<script>
标签更有条理的方法。
当您在开发环境中测试应用程序时,将所有这些模块放在更易于调试的分离文件中而不是所有这些模块连接起来都没有帮助吗?
使用requirejs,您可以在生产环境中使用的优化/连接/缩小代码与表示开发环境中每个模块的独立文件列表之间切换。
您是否为应用中的每个模块创建了一个全局变量?
Requirejs避免为每个模块创建全局变量,因此您的全局范围不会变得混乱。
按照声明模块的方式遵循约定通常是一种很好的做法。 Requirejs实现了AMD规范,这是一种在客户端javascript中加载模块的深思熟虑的方法。
http://requirejs.org/docs/whyamd.html
如果它们已经在成熟的框架中实现,那么遵循约定会更容易。有时我们没有注意到,但在应用程序之间,我们以不同的方式执行相同的操作,并且会影响维护阶段。
看看requirejs优化器。看看它给你的所有选项。它允许您排除文件,更改给定模块的版本,更改缩小工具,将优化过程与 grunt 或 bower 等其他工具集成。
http://requirejs.org/docs/optimization.html
如果您不需要这些,那就继续按照自己的方式进行。