【问题标题】:Generate a script with php or use json用php生成脚本或者使用json
【发布时间】:2011-04-25 01:40:44
【问题描述】:

我需要知道什么更好/更有效,当我的页面加载时,我需要从数据库中加载一些元素。现在我使用 php 在脚本标签中生成正确的 JS。

看起来像这样

<script type="text/javascript">
canvas = $('#drawn').get(0)
c = canvas.getContext('2d');
    <? foreach ($projectArray[1] as $shape): ?>
    <?
        switch ($shape['type']): 
            case 1: ?>
                c.beginPath();
                c.moveTo(<?=$shape['x_points'][0] ?>, <?=$shape['y_points'][0] ?>);
                <? for ($point = 0; $point < count($shape['x_points'])-1; $point++): ?>
                    c.lineTo(<?=$shape['x_points'][$point] ?>, <?=$shape['y_points'][$point] ?>);
                <? endfor; ?>
                c.stroke();
                <? break;
...

这会在页面底部生成一个很长的脚本,看起来像这样。

script type="text/javascript"> 
canvas = $('#drawn').get(0)
c = canvas.getContext('2d');
c.beginPath();
c.moveTo(373, 138);
...
c.lineTo(586, 242);
c.lineTo(588, 243);
c.lineTo(589, 244);
c.stroke();
c.beginPath();
c.moveTo(222, 165);
c.lineTo(222, 165);
...
c.lineTo(313, 309);
c.lineTo(261, 309);
c.stroke();
c.beginPath();
c.moveTo(81, 110);
c.lineTo(81, 110);
c.lineTo(84, 110);
...

如您所见,这会根据我从数据库中提取的内容生成一个基于 php 传递的数组的长脚本。在我内心深处,这感觉是错误的做法,我应该将数组编码为 json 并将其作为 json 对象进行迭代。

真的我的问题是,生成这样的脚本是否符合规定,或者我应该使用 json 吗?这样做的好处是什么?

【问题讨论】:

  • JSON。你重复了c.lineTo( 十亿次,所以在你的服务器上解析一堆数字和一个函数分隔符会更容易。
  • 无论哪种方式,您都必须运行 c.lineTo( 很多只是我在带有对象的 for 循环中运行它,或者我从生成的长脚本运行它
  • 不,Blender 的意思是,一遍又一遍地创建许多字符串“c.lineTo”(并将该脚本发送给用户)而不是仅仅发送原始数据数组,并在 javascript 中进行数字迭代。您在 PHP 中做的越少,您的应用程序就越能随用户扩展。
  • 啊谢谢@greg 我很困惑

标签: php javascript html json


【解决方案1】:

我建议使用 JSON。您可以从数据库中以数组的形式获取记录,然后简单地将其转换为 JSON,结果将是更具可读性的代码,甚至更快的 PHP 端代码会导致更快的页面加载。现在,除非您分析您的 JS 端,否则很难预测 JSON 在客户端是否会更快。 AFAIK,优化和快速的代码没有灵丹妙药。

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2015-06-08
    • 2017-03-22
    • 2011-11-24
    • 2017-09-23
    • 2013-05-18
    相关资源
    最近更新 更多