【问题标题】:Making requirejs modules AMD compliant使 requirejs 模块与 AMD 兼容
【发布时间】:2012-05-28 02:02:15
【问题描述】:

我目前正在构建一个应用程序,其中前端承担了很多繁重的工作。 为了保持一切整洁有序,我想使用requirejs。但是,要充分使用 require.js,我使用的所有模块都应该符合 AMD 标准。

这意味着每次更新我使用的模块时,我都需要等待兼容 AMD 的版本出现,或者自己制作一个(我目前不知道该怎么做)。

这是一个真正的转折。

看着这个https://github.com/jrburke/backbone/blob/optamd/backbone.js,在我看来,制作一个像 Backbone AMD 兼容的模块并不像将插件包装到一个通用函数中那么简单。

是否有或多或少直接的方法使模块符合 AMD 标准?

【问题讨论】:

标签: javascript requirejs modularity commonjs js-amd


【解决方案1】:

好吧,他的版本非常防弹,因此可以在各种情况下运行。既然您知道您正在运行的环境以及什么是可用的/什么是不可用的,那么您可以做出一些假设,让您做一些更直接的事情。

查看这个要点,假设 jQuery、下划线和定义在全局范围内,我将 bacbkonejs 设为 AMD 模块,并且我不需要 commonjs 支持: https://gist.github.com/2762813

我只是添加

define(function() {
  var obj = {};
  obj._ = window._;
  obj.jQuery = window.jQuery;

到顶部和

.call(obj);
   return obj.Backbone;
});

到底部。


感谢 @SimonSmith 让我注意到 UseJS。 UseJS 是一个 AMD 加载器插件,它允许您加载非 amd 格式的模块而无需修改它们。我自己还没用过,但看起来很有希望:https://github.com/tbranyen/use.js/

更新

RequireJS 2.0 现在直接支持您通过 shim 配置寻找的功能:https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

【讨论】:

  • 太棒了!谢谢!很期待ES6,这个真的需要标准化。
  • 顺便说一句,我想你的意思是返回 obj._ 而不是返回 obj.Backbone :)
猜你喜欢
  • 1970-01-01
  • 2012-01-06
  • 2014-09-09
  • 2017-04-24
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多