0

寻找requirejs.noConflict(),或以某种方式从库中删除全局足迹。我的用例是我正在编写一个小部件以在可能已经定义的第 3 方页面中运行requiredefine使用先前版本的 requirejs 甚至完全使用另一个库)。

我已经尝试过自己实现这个并且它大部分都有效。为简单起见,假设我不恢复原始值,只删除足迹。我在我的数据主中做了这样的事情:

  var mycontext = requirejs.config({context : 'asdf', baseUrl : 'http://foo.com' });

  mycontext(['require','foo'], function (require, foo) {
        var f = require('foo');
  });

  // namespace cleanup
  window.requirejs = undefined;
  window.require = undefined;
  window.define = undefined;

这里的问题是ffrom 的值require('foo')返回 null,但仅当我进行命名空间清理时。这闻起来像 requirejs 中的错误,但我希望有一个官方的无冲突解决方案。

由于所有与 jQuery 相关的 noConflict() 问题,很难用谷歌搜索这个问题。

4

1 回答 1

0

RequireJS 文档中有一个标题为“我如何向不依赖 REQUIREJS 的其他人提供库? ”的部分。

您还可以查看示例构建文件,其中显示了如何wrap使用。

Flight 库就是一个很好的例子。

默认情况下,该库使用 AMD,但有一个独立版本,它将所有模块包装在一个匿名函数中,并在顶部包含一个微小的 require/define API(他们为此使用自己的构建工具)。来源可以在这里找到。

请注意,要使其正常工作,所有模块都需要 ID,但 r.js 优化器会为您处理。

使用这些技术应该允许您单独保留任何已定义的 require/define 变量。

于 2013-09-05T23:18:24.477 回答