SlickGrid 用 AMD 污染全局命名空间



我正在尝试将SlickGrid导入我的应用程序...但它会连接到窗口,即使我使用 AMD 加载模块

有没有办法使用填充码配置来避免污染命名空间。另一个问题可能是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"
], () ->

有我当前的填充码配置以及我正在使用网格的模块

原则上,您可以使用填充码配置中的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 属性的存在,对此您无能为力。

您可以:

  • 联系插件作者并要求他添加AMD支持(或者更好的是,在github上提交拉取请求)
  • 将插件代码包装在define调用中,然后删除填充程序配置。

相关内容

最新更新