PHP还是JS模板引擎?(对于同一html的多个块)


PHP or JS Templateing engine? (for multiple blocks of the same html)

主要问题在底部用粗体显示,但我将向您介绍我要问什么以及为什么要问。

基本上,我现在为用户做的是一次一个,并试图让他们在一个页面上显示所有内容。我曾使用PHP将数据放在html中,但对改进我的代码感兴趣,并想知道带javascript的handlers.js是否更有意义,即使只是为了我自己的理智。

假设用户有一个列表,每个旁边都有复选框

[x] Option 1
[ ] Option 2
[ ] Option 3
...
[x] Option 20

对于选中的每个框,都会显示一个html块,其中包含来自数据库的信息。

现在,我每页只显示一个html块。PHP在同一个页面上,获取数据,并循环通过两个查询生成的2个数组,在html中使用内联PHP生成当前的html块。

....
<div class="option-wrapper">
    <?php foreach ( $option_list as $option ) : ?>
....

需要能够在同一页面上生成1到20次相同的代码块。我想我仍然可以使用php内联并在整个html块上循环,为每个选定的选项创建另一个html块。

|    Option 1      |  |    Option 20     |
|  Title: Test1    |  |  Title: Test2    |

但我想知道使用javascript模板引擎是否有好处。我已经为图表数据编写了javascript,目前我有隐藏的html元素来存储php变量(其中15个来自两个数组),然后由我的jQuery提取。但我已经觉得在html中隐藏变量至少感觉是一种糟糕的做法。

<div id="total-users" style="display:none;"><?php echo $total_users ?></div>
....
var totalUsers = $('#total-users').html();

这可能是其中之一,如果你必须问的话,这可能是糟糕的练习型问题。但是,老实说,这种做法不好吗

为了编写更高质量的代码,在php获取所有数据后,使用json_encode会更好吗。然后在为所选的每个选项克隆的html块中使用像handlers.js这样的javascript模板引擎

还有一件事,我将来可能希望能够在每个区块中使用下拉菜单切换动态显示的数据,这会改变哪条路线更有意义吗?

还有什么明显的是我遗漏了,或者做错了吗?

谢谢!

我绝对建议使用数据模板。

1-当用户选择一个选项(或从所有可用选项中提交他们的最终选择)时,进行AJAX调用以检索JSON对象(您可以在一个JSON调用中返回一个对象或所有选项数据,后者是首选)。

2-使用模板(手柄、小胡子、下划线等),在成功回调函数中呈现数据。

这将使您的代码更加高效,并且对于未来的UI请求更加灵活(从用户体验的角度来看,您的代码将支持许多不同的实现)。

如果我理解正确的话,您从数据库中检索的信息是静态的(也就是说,每次点击复选框都不会改变)。

如果以上是真的,我个人会这样做。(只是我的看法)

我会从数据库中获取所有信息(指所有的"复选框")一次,服务器端(PHP)。然后我会把它们放在隐藏的div中:

<div id="stuffFromDb1" class="hidden" style="display: none">blablabla</div>

然后,当用户单击复选框时,我会通过将display:none更改为display:block来显示相应的div。(使用jQuery更容易,请参阅Toggle.

在我看来,这是最有效的方法,而不是通过AJAX或多个"表单"获取信息。

编辑:

与AJAX和表单发布相比,我更喜欢这种方法,因为它减少了对服务器的请求数量。除非数据库查询非常耗费CPU(复杂),否则查询数据库一次通常比多次更快,并为用户提供更好的体验。

第2版:

很难在没有看到代码的情况下给你一个答案,但对于100、200甚至1000,我敢打赌,一次加载所有代码会比一乘一加载更快,特别是如果你只需要对数据库进行一次查询就可以实现这一点。

客户端模板系统总是依赖于客户端的速度。在较新的浏览器/新的PC中,JS引擎相当快,但对于较旧的PCs/较旧的浏览器,这根本不是真的。复杂的DOM操作+完成AJAX请求所需的时间可能需要相当长的时间,在这段时间内,用户可能无法与页面交互。此外,可能还会出现其他问题(AJAX种族状况突然出现在我的脑海中)。