Javascript 需要来自捆绑库(即jquery ui)的单个模块

Javascript 需要来自捆绑库(即jquery ui)的单个模块,javascript,jquery-ui,requirejs,jquery-ui-sortable,knockout-sortable,Javascript,Jquery Ui,Requirejs,Jquery Ui Sortable,Knockout Sortable,我正在用durandal创建一个应用程序,这意味着我正在使用requirejs。 我决定使用强大的knockout-sortable插件。事实证明,它在内部使用了jqueryui特性,这很好。我还在我的应用程序中定义了整个jqueryui包,因此在我的requirejs配置中 "jqueryui": "../Scripts/jquery-ui-1.10.3.custom", 此外,插件作者正在使用AMD加载来获取jquery.ui.sortable,这就是问题所在。jqueryui似乎没有用r

我正在用durandal创建一个应用程序,这意味着我正在使用
requirejs
。 我决定使用强大的
knockout-sortable
插件。事实证明,它在内部使用了
jqueryui
特性,这很好。我还在我的应用程序中定义了整个
jqueryui
包,因此在我的
requirejs
配置中

"jqueryui": "../Scripts/jquery-ui-1.10.3.custom",
此外,插件作者正在使用AMD加载来获取
jquery.ui.sortable
,这就是问题所在。
jqueryui
似乎没有用
requirejs
来定义自己,既不是整个包,也不是单个模块


我是否必须分别从
jqueryui
导入任何模块,并为
requirejs
配置中的每个定义路径导入任何模块,以使其显式可见,或者是否有方法告诉
requirejs
插件请求的
jquery.ui.sortable
模块中已经存在此
jquery.ui.sortable
模块对于?

您应该能够使用
path
requirejs配置设置一个简单的别名

paths: {
  'jquery.ui.sortable': 'jquery-ui'
}
或者,如果这不起作用,您可以使用
map
config

map: {
  '*': {
    'jquery.ui.sortable': 'jquery-ui'
  }
}
或者在使用
map
时,您甚至只能为该插件设置别名

map: {
  'THE-JQUERY-UI-PLUGIN-ID': {
    'jquery.ui.sortable': 'jquery-ui'
  }
}
最后一个使它成为这样,当有问题的插件进行
require(“jquery.ui.sortable”)
调用时,它实际上会拉入
jqueryui
模块,您知道该模块已经内置了可排序功能


还有一个我非常喜欢使用的
jqueryuiamd
项目。该项目将所有
jqueryui
模块转换为单个AMD模块。您可以使用它将更简单、更模块化的集成到您的项目中。然而,即使这样,您也需要一些别名,因为您的插件需要
jquery.ui.sortable
,但是在
jquery ui amd
中,id将是
jquery ui/sortable

似乎是一个简单而无痛的解决方案,谢谢。明天我将尝试在工作中以这种方式实施它,并在这里给您反馈。还感谢您提出这个
jqueryui
模块化版本。