应用
在PHP中,我将输出,网络爬虫一些初步意见,可以刮我的网站:PHP和JS如何共享HTML模板?
----------------
| cool view 1 |
----------------
| cool view 2 |
----------------
| cool view 3 |
----------------
| Load more |
----------------
的Javascript还需要动态地产生了同样的观点。当用户点击“加载更多”按钮,它的AJAX到服务器,并将结果附加到页面:
----------------
| cool view 1 |
----------------
| cool view 2 |
----------------
| cool view 3 |
----------------
| cool view 4 |
----------------
| cool view 5 |
----------------
| cool view 6 |
----------------
| Load more |
----------------
当前实现
目前,我的PHP意见和JS的看法是分开写。以下是使用CodeIgniter框架加载假设PHP视图的示例。
view.php
<?php
<div>
<span>cool view</span>
<span><?=$id?></span>
</div>
?>
Controller.php这样
$this->load->view(
'view',
array('id' => '999')
);
而这里的AJAX的例子,用来加载Prototype框架的假设的看法。
ajax.php
echo json_encode(
array('id' => random())
);
view.js
MyView = Class.create({
initialize: function(id) {
var div = new Element('div');
var span0 = new Element('span').update('cool view');
var span1 = new Element('span').update(id);
div.appendChild(span0);
div.appendChild(span1);
return div;
}
});
controller.js
new Ajax.Request(
'/index.php/someController/someMethod', {
onSuccess: function(transport) {
var response = transport.responseText.evalJSON();
$('viewsContainer').appendChild(
new MyView(response.id)
)
}
}
);
需要一个清洁SOLUT离子
我需要一种方式来分享整个PHP和JS的HTML模板,而无需重写所有内容。在我的实际项目中,我有几十个观点。在PHP和JS中复制视图代码似乎很难维护。我没有用廉价的PHP路由将直接的HTML打印到AJAX,因为1)包含HTML标签需要额外的大小开销,2)它不是客户端不可知的 - 也就是说,非浏览器客户端无法理解输出,以及3)它不允许JS在视图内的子视图上干净地附加侦听器。