12

requirejsで口ひげをロードして使用したいと思います。

たぶん、この質問はすでに尋ねています:
RequireJSを使用したMustacheでのAMDモジュールのロードエラー

とにかく、私は自分のコードを修正する方法を見つけようとしています:


main.js

require.config({
    paths: {
        jquery: 'libs/jquery/jquery',
        underscore: 'libs/underscore/underscore-min',
        backbone: 'libs/backbone/backbone-optamd3-min',
        mustache: "libs/mustache/mustache"
    }
});

require([
    'views/app'
    ], function(AppView){
        var app_view = new AppView;
 });

app.js

define([
    'jquery',
    'underscore', 
    'backbone',
    "mustache"
    ], function($, _, Backbone, Mustache) {
        console.log($, _, Backbone, Mustache); // <-- *** Mustache is null ***
        // ......
       }
);

app.jsファイルのコメントでわかるように、 Mustache is null...
Mustacheの別のライブラリを使用する必要がありますか?ここで私が使用しているのはMustacheです

4

4 に答える 4

17

Mustacheは、2012年7月の時点でAMDモジュールをサポートしているようです。したがって、require.jsなどのローダーを使用してすぐに機能するはずです。

于 2012-11-12T18:59:50.440 に答える
9

mustacheディレクトリに次のような新しいファイルmustache-wrap.jsを作成する必要があります。

 define(['libs/mustache/mustache'], function(Mustache){
    // Tell Require.js that this module returns a reference to Mustache
    return Mustache;
 });

そして、あなたのメインは次のようになります:

  mustache: "libs/mustache/mustache-wrap"
于 2012-04-12T11:10:14.513 に答える
7

RequireJSこの質問(および回答)を投稿した時点で2.1.0がリリースされていたかどうかはわかりませんが、これを処理するための推奨される方法は、config要素を使用することです(プロジェクトのドキュメントページでshim詳細を確認してください)。

main.jsは次のようになります。

require.config({
    paths: {
        jquery: 'libs/jquery/jquery',
        underscore: 'libs/underscore/underscore-min',
        backbone: 'libs/backbone/backbone-optamd3-min',
        mustache: "libs/mustache/mustache"
    },
    shim: {
        'mustache': {
            exports: 'Mustache'
        }
    }
});
(...)

これは、ラッパーが@AntoJsに提案したものと実質的に同じですが、定型コードがありません。

...しかし、MustacheはAMDをサポートしているので、そもそもラップ/シムする必要はありません!

于 2013-02-26T23:17:27.413 に答える
1

おそらく、口ひげを消費するコード、または「main.js」のどこかでインラインの名前付き定義を実行することもできます(* -wrapファイルを作成する手間を省きます)

define('mustache', ['libs/mustache/mustache'], function(){
    // Tell Require.js that this module returns a reference to Mustache
    return Mustache; // from global
});
require(
    ['jquery','underscore','backbone','mustache']
    , function($, _, BB, Mustache){
        // use them
    }
)
于 2012-05-18T06:20:18.173 に答える