避免RequireJS改变其他框架的全局注册

时间:2013-06-05 12:56:26

标签: knockout.js requirejs

我正在寻找一个javascript框架,可以帮助我异步加载javascript,这样我就可以制作控件,我可以在应用程序之间共享&确保不同的控件共享其引用的框架,而主应用程序不需要知道需要哪些库。我一直在看requirejs并且我非常喜欢它,但是我发现当我将它添加到依赖于KnockoutJS的应用程序时,“ko”全局不再被声明了。

据推测,这是因为KnockoutJS决定我有一个AMD,因此它只留下了全局命名空间。如果我用RequireJS加载它,我会很好,但是如果它是由脚本标签加载的那么不是很好。显而易见的答案是不要以这种方式加载它,但是如果现有的应用程序还没有为AMD编写并且我想添加requirejs来促进我的共享控件并且它破坏了现有应用程序,则会出现问题。

我可能会做一个解决方法,将敲击放回全局命名空间,但我猜测敲击不仅仅是这种行为,而是我发现的第一个测试。

我非常愿意使用shim将非AMD暴露给AMD方法,但我不想在页面中添加RequireJS影响其他没有明确引用它的代码。有没有类似于jQuery的RequireJS无冲突模式,或者类似的框架,它不会产生不良的副作用?

1 个答案:

答案 0 :(得分:1)

您无法配置RequireJS来执行此操作,因为这不是RequireJS正在执行的操作。

Knockout检查RequireJS是否可用并更改其绑定方式 - 这是code这样做。

并且已经有一个bug写了反对这个,基本上是以“按设计工作”结束。