虽然backbone-deep-model支持与RequireJS一起使用的AMD,但它依赖于一个名为underscore.mixin.deepExtend.js的外部文件中的下划线混合,该文件与AMD不兼容。
看这个问题:How to mixin Underscore plugins in RequireJS? ,看来我可以在 RequireJS 中的 shim init 设置 中手动将 deepExtend 混合到 Underscore 中。
...
shim: {
...
'deep-model': {
deps: 'underscore',
init: function() {
_.mixin(/* hash of deepExtend functions */);
return _;
}
}
}
...
但是,我现在不知道该怎么做,因为 underscore.mixin.deepExtend 不会返回 _.mixin() 所需的函数散列。
有没有一种方法可以在不修改源代码的情况下使用 RequireJS 加载backbone-deep-model?
最佳答案
这可能不是您正在寻找的答案,但我个人建议的一个选择是将 Underscore(以及任何混合项,可能还有 Backbone 和 jQuery)完全排除在 Require 之外。这种方法的主要优点(除了让你的问题作为副作用消失之外)是你不必通过导入相同的库(或库,如果你对 Backbone/jQuery 做同样的事情)来启动每个 require 模块。 p>
确实,这稍微“污染”了全局空间,但在我看来,有一个 _
(或 $
或 Backbone
)变量全局命名空间不会伤害任何东西。然而,它会解决您的问题,根本不需要垫片,并为您节省大量导入时间。当然,您可以(并且应该)仍然在您自己的代码中使用 Require,因为防止您的变量“污染”全局命名空间将为您节省 future 的麻烦。
只是一个想法。
关于backbone.js - 如何使用 RequireJS 加载 Backbone 深度模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787817/