1

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ラッパー」がいくつかあるようですが、それらがどのように使用されているのか理解できないようです。

4

2 に答える 2

2

Mustache は自身を AMD モジュールとして定義しているため、shim する必要はありません。TypeScript と RequireJS との統合方法はわかりませんが、構成のシム配列から Mustache を削除してみてください。

于 2013-01-13T02:07:19.173 に答える
1

TypeScript についてはよくわかりませんが、ドキュメントには、コンパイラ オプションにより、生成された JavaScript が CommonJS から AMD に変更されることが記載されています。( --module amd)

Visual Studio TypeScript オプション

お役に立てれば

于 2013-01-10T03:05:53.977 に答える