我正在尝试将SlickGrid导入我的应用程序......但即使我使用AMD加载模块,它也会附加到窗口
是否有办法使用Shim配置来避免污染命名空间。另一个问题可能是SlickGrid依赖项将在全局命名空间中查找它。
想法会很棒。
shim:
'grid/slick.core':
deps: ["jquery"]
'grid/slick.grid':
deps: ["jquery"]
'grid/jquery.event.drag-2.0.min':
deps: ["jquery"]
'grid/jquery.event.drop-2.0.min':
deps: ["jquery"]
define [
"grid/jquery.event.drag-2.0.min"
"grid/jquery.event.drop-2.0.min"
"grid/slick.core"
"grid/slick.grid"
], () ->
我当前的Shim配置以及我在
中使用网格的模块答案 0 :(得分:1)
原则上,您可以使用shim配置中的init()
回调从全局范围中删除任何对象:
'grid/slick.core': {
deps: ['jquery'],
exports: 'Slick',
init: function (bar) {
//"this" is the global scope
var slick = this.Slick;
delete this.Slick;
return slick;
}
}
但正如您在问题中所述,库本身取决于全局对象上是否存在Slick属性,您无法做到这一点。
你可以:
define
调用中包装插件代码,然后删除shim config。