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 + "." );
        }
    });       
}      

如果我有一个用 PHP 编写的 AJAX 调用的页面,它刚刚为我生成了LI部分,我可以省去很多关于字符串 += '' 位的摆弄的麻烦。

问题是……哪个更好?

使用客户端 compy 渲染 html,还是使用服务器渲染 html?

我不在乎我使用哪个,只要我知道它至少是最佳或最佳实践方式。

此查询来自需要使此应用程序超未来证明。

4

2 回答 2

1

从历史上看,服务器端处理速度更快。话虽如此,对于您的应用程序来说,这是非常小的东西,可能不会有太大的不同。问问自己哪种方法更容易维护,这就是你的答案。

于 2013-01-02T16:22:53.543 回答
0

不确定这里的“服务器端更快”的论点。这通常是正确的,但在这种情况下,区别是..

客户端渲染:通过 ajax 获取 JSON 在 javascript 中构建 html 字符串将 HTML 字符串注入文档正文,导致渲染(=处理的大部分)

Server-Side pre-rendering (ie server Deliverready to go HTML) : Get HTML via ajax (so a bit more traffic) injection HTML string into doc body, 导致渲染 (= the bulk of the processing)

您优化的唯一部分是在 jacvascript 中构建 HTML 字符串,与大部分工作相比,处理时间是微不足道的:HTML 注入和后续渲染。

我喜欢这种客户端渲染方法,特别是如果将来有可能更改服务器平台。

银行使用 ackup 服务来做这样的事情:有时他们在平台上运行一个服务,两个或多个用于故障转移的实例,有时另一个服务做相同的事情,但编写在完全不同的平台上。重量级的东西,日常 Web 应用程序通常不需要,但它强调了将渲染处理与数据处理分开的价值。

于 2013-01-02T16:56:03.777 回答