我正在使用 durandal 创建一个应用程序,这意味着我正在使用 requirejs
。
我决定使用强大的 knockout-sortable
插件。事实证明,它在内部使用了 jquery-ui
特性,这很好。我还在我的应用程序中定义了整个 jquery-ui
包,所以在我的 requirejs
配置中它显示为
"jqueryui": "../Scripts/jquery-ui-1.10.3.custom",
此外,插件作者使用 AMD 加载来获取 jquery.ui.sortable
,这就是问题所在。 jquery-ui
似乎没有用 requirejs
定义自己,无论是整个包还是单个模块。
我是否必须分别从 jquery-ui
导入任何模块,并为 requirejs
配置中的每个定义路径,以便它明确可见或是否有办法告诉 requirejs
在插件要求的 jquery-ui
中已经有这个 jquery.ui.sortable
模块?
最佳答案
您应该能够使用 path
requirejs 配置设置一个简单的别名
paths: {
'jquery.ui.sortable': 'jquery-ui'
}
或者如果这不起作用,您可以使用 map
配置
map: {
'*': {
'jquery.ui.sortable': 'jquery-ui'
}
}
或者当使用 map
时,你甚至可以只为那个插件设置别名
map: {
'THE-JQUERY-UI-PLUGIN-ID': {
'jquery.ui.sortable': 'jquery-ui'
}
}
最后一个使得有问题的插件在调用 require("jquery.ui.sortable")
时调用它实际上引入了 jquery-ui
模块您知道它已经内置了可排序功能。
还有一个我非常喜欢使用的jquery-ui-amd
项目。该项目将所有 jquery-ui
模块转换为单独的 AMD 模块 https://github.com/jrburke/jqueryui-amd .您可以使用它来更轻松、更模块化地集成到您的项目中。然而,即使那样你也需要一些别名,因为你的插件需要 jquery.ui.sortable
,但在 jquery-ui-amd
中,id 将是 jquery-ui/可排序
。
关于javascript - 需要来自捆绑库的单个模块(即 jquery-ui),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835486/