我现在有这样的代码:
<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部分,我可以节省大量的麻烦,我必须处理字符串+= "位。
的事情是…哪个更好?
使用客户端公司渲染html,还是使用服务器渲染html ?
我不在乎我用哪一种,只要我知道它至少是最好的或最佳实践的方法。
这个查询来自于需要使这个应用程序超级未来证明。
从历史上看,服务器端处理速度更快。话虽如此,对于您的应用程序来说,这是非常小的东西,可能不会有太大的区别。问问你自己哪种方法更容易维护,这就是你的答案。
这里不确定"服务器端更快"的论点。一般来说,这是正确的,但在这种情况下,不同之处在于……
客户端渲染:通过ajax获取JSON在javascript中构建HTML字符串将HTML字符串注入文档主体,导致渲染(=大量处理)
服务器端预渲染(即server delivery ready to go HTML):通过ajax获取HTML(因此会增加一些流量)将HTML字符串注入文档主体,导致渲染(=大量处理)
唯一需要优化的部分是在javascript中构建HTML字符串,与大部分工作相比,这是微不足道的处理时间:HTML注入和随后的呈现。
我喜欢这种客户端呈现方法,特别是如果将来服务器平台可能会发生变化的话。
银行对备份服务就是这样做的:有时他们有一个服务运行在一个平台上,两个或更多的实例用于故障转移,有时另一个服务做同样的事情,但写在一个完全不同的平台上。重量级的东西,通常不需要日常的web应用程序,但它强调了将渲染处理与数据处理分开的价值。