3

dojo ビルドで文字列をインターンできないように見える理由を理解しようとしています。レイヤ ファイルは正しく作成されますが、個々の dijit に関連付けられたコードが正しくインターンされません。

以下は、ビルド出力の一部であり、失敗している場所を示しています。

release:  Interning strings for : ../../release/fwijits5.31.2012/content/fwijits/optionalDijits/commenting.js
release:      ../../release/fwijits5.31.2012/content/fwijits/optionalDijits/templates/commenting.htm
release:  Optimizing (shrinksafe, stripConsole=normal) file: ../../release/fwijits5.31.2012/content/fwijits/optionalDijits/commenting.js
release:  Could not strip comments for file: ../../release/fwijits5.31.2012/content/fwijits/optionalDijits/commenting.js,

エラー: InternalError: 不正な文字

テンプレートが js ファイルに正しく追加されていないため、最適化が失敗したようです。html がインターンされた後の js は次のようになります。出力からはわかりませんが、JavaScript の最後に大量の特殊文字が追加されています。

if(!dojo._hasResource["fwijits.optionalDijits.commenting"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["fwijits.optionalDijits.commenting"] = true;
dojo.provide("fwijits.optionalDijits.commenting");

dojo.require("dijit._Widget");
dojo.require("dijit._Templated");

dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.TabContainer");


//The main widget that gets returned to the browser
dojo.declare("fwijits.optionalDijits.commenting", [dijit.layout.ContentPane, dijit._Templated], {

  widgetsInTemplate: true,
  _earlyTemplatedStartup: true,
  templateString: dojo.cache("fwijits.optionalDijits", "templates/commenting.htm"),
  basePath: dojo.moduleUrl("fwijits.optionalDijits"),

  //This function contains all configurable parameters
  constructor: function(params){
    params = params ||{};
    this.inherited(arguments);
  },

  //This functions run on a "startup" call
  startup: function(){
    var _this = this;

    this.inherited(arguments);
  },

  _addPointComment:function(){
    console.debug("button clicked");
  }

});

}

htm ファイルは非常に単純なので、それが問題の原因ではないと思います。

<div dojoAttachPoint="containerNode">
  <div dojoattachpoint="_outerDiv">
    <div dojoattachpoint="_addPoint" dojotype="dijit.form.Button" dojoattachevent="onClick:_addPointComment"><b>Add Comment</b></div>
  </div>
</div> 

助言がありますか?

4

1 に答える 1

0

どのバージョンの Dojo? ビルド システムには、HTML または HTM で終わらない文字列をインターンするバグがありますが、HTM で試したことはありません。

チェックする価値があるかもしれません。これは 1.7 で修正され、1.8 にバックポートされたことを知っています。

https://bugs.dojotoolkit.org/ticket/15867

于 2013-07-23T02:57:49.067 に答える