Knockout和jquery uisortable Requirejs配置使用CDN



我正试图使用requirejs加载我们的许多JS依赖项。KnockoutSortable对jquery ui\sortable的依赖关系存在问题。

我无法从jquery ui的cdn下载中获得sortable.js——它通过从我的网站内的副本下载来满足它的依赖性。我试着填充

'knockoutSortable' : {
    deps: ['jqueryUi']
},

但这并没有迫使Knockout使用jquery ui 的CDN下载版本

我们的配置如下:

var require = {
baseUrl: '/Scripts',
paths: {
    jquery: ['//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min', 'lib/jquery-1.9.1.min'],
    jqueryUi: ['//ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min', 'lib/jquery-ui-1.11.3.min'],        
    knockout: ['//cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min','lib/knockout-3.3.0.min'],
    knockoutMapping: ['//cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min','lib/knockout.mapping-latest.min'],
    knockoutValidation: ['//cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.2/knockout.validation.min','lib/knockout.validation.min'],
    knockoutPostBox: ['//cdnjs.cloudflare.com/ajax/libs/knockout-postbox/0.5.1/knockout-postbox.min', 'lib/knockout-postbox.min'],
    knockoutSortable: ['//cdnjs.cloudflare.com/ajax/libs/knockout-sortable/0.11.0/knockout-sortable.min','lib/knockout-sortable.min'],
    ...
shim: {
    'jquery': {
        exports: '$'
    },
    'knockoutSortable' : {
    deps: ['jqueryUi']
},...

由于jquery-ui和knockout都兼容AMD,您不能使用填充程序配置,因此需要使用映射配置将jquery-ui模块映射回jqueryUi路径。

参见链接

我们通过将此映射配置添加到require.config 来解决此问题

map : {
    '*': {
        'jquery-ui/core': 'jqueryUi',
        'jquery-ui/sortable': 'jqueryUi',
        'jquery-ui/draggable': 'jqueryUi',
        'jquery-ui/mouse': 'jqueryUi',
        'jquery-ui/widget': 'jqueryUi'
    }
}

最新更新