2

因此,我一直在构建单页 Web 应用程序一段时间,并且一直在以极其模块化的方式编写所有代码。我一直在对所有模块使用 javascript 模块模式,我的主要 API 使用显示模块模式来为插件和其他模块公开一个小 API。

因此,即使我一直在编写这样的代码,有人提到我应该使用 require.js,因为它提供了更好的模块化方法。

我认为 require.js 并没有真正让它变得更加模块化,所以我的下一个想法是 require.js 如何分离依赖项。Require.js 强制您在每个模块文件中命名依赖项。但这对我来说似乎是我必须为每个模块做的任务,而且我有很多模块。目前,我的所有文件都在我的 grunt 构建过程中连接到一个 javascript 文件中,所以实际上我的所有文件都是在开始时加载的。我需要在开始时加载我的大部分模块,所以这样做很有意义。

所以我的问题是......即使我的代码是模块化的并且我的所有文件都连接在一起并在开始时加载,我是否应该使用 require.js?我需要担心依赖关系或加载顺序吗?处理这种情况时的任何帮助/建议或以前的经验都会有帮助。谢谢

4

1 回答 1

4
  1. 您是否有烦恼<script>以正确的顺序放置标签以正确处理依赖关系?

    拥有一个 requirejs 配置文件,您可以在其中声明第三方代码和您自己的代码依赖树,这比您自己声明<script>标签更有条理。

  2. 当您在开发环境中测试您的应用程序时,将所有这些模块放在更容易调试的单独文件中而不是将所有模块连接起来会不会有帮助?

    使用 requirejs,您可以在生产环境中使用的优化/连接/缩小代码和代表开发环境中每个模块的独立文件列表之间切换。

  3. 您是否为应用程序中的每个模块创建了一个全局变量?

    Requirejs 避免为每个模块创建一个全局变量,这样你的全局范围就不会变得混乱。

  4. 在声明模块的方式中遵循约定通常是一个好习惯。Requirejs 实现了 AMD 规范,这是一种在客户端 javascript 中加载模块的深思熟虑的方式。

    http://requirejs.org/docs/whyamd.html

    如果它们已经在成熟的框架中实现,那么遵循约定会更容易。有时我们没有注意到,但在应用程序之间我们做同样的事情不同,这会影响维护阶段。

  5. 看看 requirejs 优化器。看看它给你的所有选择。它允许您排除文件、更改给定模块的版本、更改缩小工具、将优化过程与gruntbower等其他工具集成。

http://requirejs.org/docs/optimization.html

如果您不需要任何这些,那么请继续按照您的方式进行操作。

于 2013-09-04T01:42:08.907 回答