如何从旧的非 AMD Javascript 代码调用 RequireJS 模块?

How to invoke RequireJS modules from old non-AMD Javascript code?

我现在正尝试使用 RequireJS 模块化我的 javascript 代码。我有 2 个 JS 文件(比方说 A 和 B)。 A 是一个大文件,其中包含我的 html 页面的主要代码。 B 是一个小型实用程序库,旨在供 A 和将来的任何其他代码使用。

我打算先把B模块化,因为B很小。之后我以后可以用RequireJS写所有的新代码,然后使用B。另一方面我会逐渐模块化A。我现在关心的是,我模块化了B之后,有没有办法让文件A继续使用代码B 以便我的应用程序可以正常工作?

我找不到任何相关信息。欢迎任何建议、文章或示例代码。

我只是自己找出答案。实际上它非常简单。只需在旧代码中使用 RequireJS。例如,如果我需要通过 RequireJS 在我的旧非模块化代码中使用 JQuery,我只需要:

首先在 main.js

中配置 JQuery
requirejs.config({
  baseUrl : '../js',
  paths : {
    'jquery' : 'jquery/jquery-1.10.2'
  },
  }
});

并在 html

中添加 main.js
<script type="text/javascript" src="../js/require.js" data-main="../js/main.js"></script>

然后在旧代码中,使用函数 requirejs 询问模块(JQuery 在这种情况下)并调用模块的函数。

  requirejs([ 'jquery' ],function(jquery)
  {
    jquery('#id').on('click',function(event){...});
  });

通过这种方式,人们总是可以从一个大的、旧的和非模块化的 JavaScript 文件中逐步模块化代码。