mustache.jsをRequireJSを使用したAMDモジュールとしてロードするのに問題があります(バックボーンモデル内で使用するため)。私もTypeScriptを使い始めており、その結果、依存関係と宣言の流れに完全には従っていません!
app.tsから:
require.config({
paths: {'jquery': 'lib/jquery-1.8.3.min', 'underscore': 'lib/underscore.min', 'backbone': 'lib/backbone.min', 'mustache': 'lib/mustache', 'appmain': 'AppMain'},
shim: {mustache: { deps: ["jquery"] }, backbone: { deps: ["underscore", "jquery"] }, appmain: {deps: ["backbone", "mustache"] } } });
require(['appmain'], (main) => {
var appMain = new main.AppMain();
appMain.run();
});
appmain.ts:
import tm = module("models/TestModel");
export class AppMain {
public run() {
var testModel = new tm.TestModel()
}
}
TestModel.ts:
/// <reference path="../modules/backbone.d.ts"/>
export class TestModel extends Backbone.Model {
constructor(options?) {
super(options);
};
initialize() {
var stringTemplate = "{{something}}";
Mustache.compile(stringTemplate);
};
}
mustache.jsはTestModel.jsの前にロードされますが、「Mustacheが定義されていません」というJavaScriptエラーが発生します。ここからmustache.jsを使用しています:https ://github.com/janl/mustache.jsなので、AMDモジュールが適切に宣言されている方法がわからないと思います。
このプロジェクトの一部として「AMDラッパー」がいくつかあるようですが、それらがどのように使用されているのか理解できないようです。