1

現在、次のようなコードがあります。

<li onclick = "                                        
    function CBAppData( callerObj, data )
    {
        var string = '';

        for( a in data )
        {            
            debug.push( data[a] );
            if( data[a].__attributes.config.name )
            {
                string += '<li>' + data[a].__attributes.config.name + '</li>';
            }
            else
            {
                alert( 'Error with json index ' + a );
            }     
        } 

        $( callerObj ).children( '.returnData' ).html( string );    
    }   

    DoAjax( 
        this,
        'get_for_url', 
        '<?php echo Site::$url; ?>Process.php', 
        {
            'space_id': '<?php echo $space->__attributes[ "space_id" ]; ?>'
        },
        CBAppData
    )
">
    <?php echo $space->__attributes[ "name" ]; ?>
    <ul class = "returnData"></ul>    
</li>

DoAjax は次のとおりです。

function DoAjax( callerObj,  _request, _url, _additionalData, callback )
{
    $.ajax({
        type: "POST",
        url: _url,
        data: { 
            request: _request,
            additionalData: _additionalData 
        },
        success: function( data )
        {   
            callback( callerObj, jQuery.parseJSON( data ) );   
        },
        error: function( a, b, c )
        {
            alert( "error: " + a + ", " + b + ", " + c + "." );
        }
    });       
}      

AJAX が呼び出すページを PHP で記述して、LI部分を生成しただけの場合、文字列 += '' ビットをいじる手間を省くことができます。

事は...どちらが良いですか?

クライアント compy を使用して html をレンダリングするか、サーバーを使用して html をレンダリングしますか?

少なくともそれが最善または最善の方法であることがわかっている限り、どちらを使用してもかまいません。

このクエリは、このアプリケーションを非常に将来性のあるものにする必要があることから来ています。

4

2 に答える 2

1

歴史的に、サーバー側の処理はより高速でした。そうは言っても、アプリケーションにとってこれはかなり小さなことであり、大きな違いはないかもしれません。どちらの方法が維持しやすいかを自問してください。答えがあります。

于 2013-01-02T16:22:53.543 に答える
0

ここでの「サーバー側の方が速い」という議論についてはわかりません。それは一般的に正しいですが、この場合の違いは..

クライアント側のレンダリング : ajax を介して JSON を取得し、javascript で HTML 文字列を作成し、HTML 文字列をドキュメント本文に挿入して、レンダリングを引き起こします (=処理の大部分)

サーバー側の事前レンダリング (つまり、サーバーはすぐに HTML を配信します): ajax 経由で HTML を取得します (そのため、トラフィックが少し増えます) HTML 文字列をドキュメント本体に挿入し、レンダリングを引き起こします (=処理の大部分)

最適化する唯一の部分は、jacvascript での HTML 文字列の構築です。これは、作業の大部分と比較してごくわずかな処理時間です: HTML 挿入とその後のレンダリング。

私は、このクライアント側のレンダリング アプローチが気に入っています。特に、サーバー プラットフォームが将来変更される可能性がある場合はなおさらです。

銀行は ackup サービスを使用してこのようなことを行います。プラットフォーム上で実行されているサービス、フェイルオーバー用の 2 つ以上のインスタンス、およびまったく異なるプラットフォームで記述された同じことを行う別のサービスがある場合があります。重いもので、通常は日常の Web アプリには必要ありませんが、レンダリング処理をデータ処理から分離することの価値を強調します。

于 2013-01-02T16:56:03.777 に答える