3

Dojo の AMD ローダーのドキュメントでは、トレース API について言及しています。これがどのように実装されているかの例はありますか?

アプリのさまざまな依存関係が読み込まれている間に「Loaded X of X」スタイルのメッセージを表示するためにそれを活用したいと思いますが、その方法や、コードのフローにトレースを含める場所がわかりません。

編集:トレース API は Dojo のソース バージョンでのみ使用できるようです。私が望むものを達成する別の方法はありますか?

4

1 に答える 1

1

このコードは機能しているように見えますが、脆すぎます。これは、1) Dojo のソース バージョンで内部の仕組みを公開する必要があること、および 2) 将来変更される可能性がある require のプロパティに依存しています。きっともっと良い方法があります!

require( [], function()
{
    // output amd progress
    var loadWatchHandle = setInterval( function()
    {
        var all = Object.keys( require.modules ).length,
            waiting = 0;

        for( dep in require.waiting )
        {
            if( require.waiting[ dep ] !== 1 )
            {
                waiting++;
            }   
        }

        // write progress
        console.log( ( all - waiting ) + '/' + all + ' files (' + parseInt( ( all - waiting ) / all * 100 ) + '%)' );
    }, 50 );

    require( [ 'dojo/parser',
        'dojo/ready',
        'dijit/layout/BorderContainer',
        'squad_builder/TabContainer',
        'dijit/layout/ContentPane',
        'dojo/domReady!' ], 
    function( parser, ready )
    {
        parser.parse();

        ready( function() // uses ready not domReady because we want initial djits to be parsed
        {
            // stop tracing
            clearInterval( loadWatchHandle );

            // bootstrap here...

        } );
    } );
} );
于 2013-03-26T09:14:50.510 に答える