PHP和JS如何共享HTML模板
How can PHP and JS share HTML templates?
应用程序
在PHP中,我会输出一些初始视图,这样网络爬虫就可以抓取我的网站:
----------------
| 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)
)
}
}
);
需要更清洁的解决方案
我需要一种在PHP和JS之间共享HTML模板的方法,而无需重写所有内容。在我的实际项目中,我有几十种观点。在PHP和JS中复制视图代码似乎很难维护。我没有采用PHP直接将HTML打印到AJAX的廉价方法,因为1)包含HTML标记会有额外的大小开销,2)它与客户端无关——也就是说,非浏览器客户端无法理解输出,3)它不允许JS在视图中的子视图上干净地附加侦听器。
您可以直接向浏览器提供最终的html:
if(<request is from ajax>)
echo $this->load->view('view', array('id' => '999'), false);
最后一个参数false
将视图加载到一个变量中,在这种情况下返回它…
然后,在javascript方面,您只需创建一个新的div
,并将其innerHTML
设置为response.text
我认为你不需要老式的方式。为什么不使用一个模板引擎,如胡子1?这样一来,您就不会有大量的HTML开销,并且仍然可以发送只包含id的瘦json(10个字符对50个字符,您的情况甚至不需要标记)。
相关文章:
- 通过javascript/html访问twitter共享iframe
- 在索引.html和应用.js [node.js] 之间共享变量
- 我可以共享一个HTML播放器吗
- 如何隐藏与要保持可见的表共享类元素的HTML表
- 有哪些方法可以在html和javascript中实现持久,可共享的存储
- Flash Professional HTML5 Canvas:是否可以在HTML表单和Canvas之间共享数据
- Asp NET在不同的解决方案中共享了html组件
- 在HTML页面之间共享数据
- Windows 10 UWP HTML/Winjs应用程序从共享魅力启动时未接收到激活的事件
- 如何自动求和HTML表中共享相同名称的输入值框
- 在 html 和 javascript 之间共享部分
- 如何在谷歌网站中显示与iframe中的特定人员共享的谷歌云端硬盘html链接
- 使用AngularJS服务将数据从一个html传输到另一个html(控制器之间的数据共享)
- 如何使用 onload 事件从 HTML 网站在 Windows 2008 上的文件共享上运行批处理文件
- jquery Mobile 如何正确加载共享标头和面板 HTML 到驻留在不同目录的页面
- 单.js文件共享 它的数据与 2 个 HTML 页面调用
- 使用html和javascript进行自定义共享点开发
- Pinterest共享HTML链接错误
- PHP和JS如何共享HTML模板
- 在Visual Studio项目之间共享HTML/Javascript