1

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

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

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

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

4

1 回答 1

1

您不能配置 RequireJS 来执行此操作,因为这不是 RequireJS 正在做的事情。

Knockout 检查 RequireJS 是否可用并更改它的绑定方式 - 这是执行此操作的代码

并且已经有一个针对此编写的错误,基本上以“按设计工作”关闭。

于 2013-06-05T14:13:34.030 回答