我在使用Gridstack在Backbone应用程序中工作时遇到问题。
RequireJS配置的精简版本如下所示:
require.config({
paths: {
jquery: '../assets/packages/jquery/1.12.0/jquery.min',
underscore: 'libs/underscore/underscore-min',
jqueryui: '../assets/packages/jqueryui/1.11.4/custom/jquery-ui.min',,
gridstack: '../assets/packages/gridstack/0.2.4/gridstack.min',
},
shim: {
"gridstack": {
deps: ["jquery", "jqueryui", "underscore"],
},
}
});
问题是Gridstack尝试为Lodash和jQueryUI组件“核心”,“鼠标”,“可拖动”,“可调整大小”和“小部件”查找获取文件。见下图。
Backbone视图文件(再次,简化)如下所示:
define([
'jquery',
'jqueryui',
'underscore',
'backbone',
'gridstack',
], function(
$,
jqueryui,
_,
Backbone,
gridstack
){
var MyView = Backbone.View.extend({
el: $("#page"),
className: "MyView",
initialize: function(){
console.log('gridstack', gridstack);
},
});
return MyView;
});
我使用的是Underscore.js(1.8.3)而不是Lodash,但这里的文档应该没问题:https://github.com/troolee/gridstack.js
是否有强制Gridstack理解其所有依赖项已经加载?
编辑2016-02-18 12:47:00
jQueryUI从https://jqueryui.com/download/下载并包含除Tooltip之外的所有内容;与Bootstrap一起使用时会引起问题。
我看到许多人获得了AMD版本的jQueryUI,例如通过鲍尔。但是,这个包适用于其他一切,所以我倾向于认为问题出在Gridstack上。
答案 0 :(得分:0)
虽然Gridstack的问题依然存在,而Gridstack的作者并不打算完全支持RequireJS(https://github.com/troolee/gridstack.js/issues/332),但我找到了一个名为 Gridster 的替代解决方案。
答案 1 :(得分:0)
对于找不到jquery-ui的错误,我必须在我的require.config中使用map来将所有文件映射到单个文件
paths: {
"jquery": "path/to/jquery-3.2.1.min",
"jquery-ui": "path/to/jquery-ui.min",
"gridstack": "path/to/gridstack",
},
map: {
'c/gridstack.jQueryUI': {
'jquery-ui/data': 'jquery-ui',
'jquery-ui/disable-selection': 'jquery-ui',
'jquery-ui/focusable': 'jquery-ui',
'jquery-ui/form': 'jquery-ui',
'jquery-ui/ie': 'jquery-ui',
'jquery-ui/keycode': 'jquery-ui',
'jquery-ui/labels': 'jquery-ui',
'jquery-ui/jquery-1-7': 'jquery-ui',
'jquery-ui/plugin': 'jquery-ui',
'jquery-ui/safe-active-element': 'jquery-ui',
'jquery-ui/safe-blur': 'jquery-ui',
'jquery-ui/scroll-parent': 'jquery-ui',
'jquery-ui/tabbable': 'jquery-ui',
'jquery-ui/unique-id': 'jquery-ui',
'jquery-ui/version': 'jquery-ui',
'jquery-ui/widget': 'jquery-ui',
'jquery-ui/widgets/mouse': 'jquery-ui',
'jquery-ui/widgets/draggable': 'jquery-ui',
'jquery-ui/widgets/droppable': 'jquery-ui',
'jquery-ui/widgets/resizable': 'jquery-ui',
}
}