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

标签 javascript jquery-ui requirejs jquery-ui-sortable knockout-sortable

我正在使用 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/

相关文章:

javascript - javascript 变量中的 asp.net razor 特殊字符问题

javascript - jquery-ui switchClass() 没有按预期工作

javascript - 是否可以使用 require.js 为文件夹设置依赖项?

html - jQueryUI Accordion 在加载时展开

javascript - 将 requirejs 模块连接成单个文件

javascript - 无法让文本插件与 IE 中的 requirejs 一起使用

javascript - 为什么不显示 json 响应?

javascript - 告诉被调用的javascript函数的顺序

javascript - RegisterClientScriptBlock 不起作用

css - 垂直居中的 Jquery 幻灯片在 Firefox 中不起作用