私は、TypeScript、Backbone、およびMustacheを使用してWebアプリケーションを作成しています。依存関係の読み込みにRequirejsを使いたい。requirejsマッピングからテキストプラグインを呼び出す
また、AMD EssentialsのVisual Studioプラグインを使用して、AMDコンパイルオプションをオンにしています。これに慣れていない人にとっては、外部モジュールをインポートすると、あなたのタイプスクリプトファイルをAMDモジュールにラップします。 例:
タイプスクリプトでは、次のモジュールをタイプ定義ファイルにインポートします。
export import Backbone = module("Backbone");
import mainTemplate = module("MainTemplate");
出力のようなものです:テンプレートの
define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...code goes here ...
});
、私はタイプ定義ファイルに次のように宣言した:
declare module "MainTemplate" { }
requirejsのプラグインをサポートするために、モジュールを次のように宣言する必要があります。
declare module "text!MainTemplate.html" { }
私はプラグインとファイル拡張子からモジュール名を削除しないでください。これは私に将来の柔軟性を与えてくれるでしょう。
私は以下のマッピングが必要です。
require.config({
map: {
"MyModule": {
"MainTemplate": "text!MainTemplate.html"
}
}
}
これは、テキストプラグインを正常に呼び出しますが、プラグインは間違ったURLを読み込みます。テキストプラグインのソースコードを調べると、次のコードが原因であることが判明しました。
load: function (name, req, onLoad, config) {
...
url = req.toUrl(nonStripName),
//returns "scripts/**text!**MainTemplate.html**.html**"
...
}
私はモジュールに名前を付ける場合は、「MainTemplate.html」は正常に動作しますが、私は、モジュール名のうちの拡張子を維持したいと思います。
私はプラグインの参照と複製の拡張を取り除くために単純な正規表現の置き換えでテキストプラグインを修正しました。
これを処理するより良い方法はありますか?
これはまあまあの回避策です、将来的にはこのモジュールの構文をサポートすることを願っています。 – thomaux