0

SlickGridをアプリケーションにインポートしようとしていますが、AMDを使用してモジュールをロードしているにもかかわらず、SlickGridがウィンドウにアタッチされています。

名前空間の汚染を回避するためにShim構成を使用する方法はありますか?もう1つの問題は、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構成と、グリッドを使用しているモジュールがあります。

4

1 に答える 1

1

原則init()として、shim configのコールバックを使用して、グローバルスコープからオブジェクトを削除できます。

'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自分で呼び出してラップし、shim構成を削除します。
于 2012-12-07T11:49:40.273 に答える