Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何决定JavaScript必须生成多少HTML?_Javascript_Html_Localization_Locale_Templating - Fatal编程技术网

如何决定JavaScript必须生成多少HTML?

如何决定JavaScript必须生成多少HTML?,javascript,html,localization,locale,templating,Javascript,Html,Localization,Locale,Templating,我开发了一个JavaScript月历,所有HTML都是由脚本动态生成的。 优点是,在包含JS和CSS文件之前,HTML只需要一个容器: <div id="calendar-box"></div> 但在我看来,这并不是最好的解决办法;我通常会尽量减少JavaScript中的语言环境。除此之外,thead会产生大量JavaScript生成的HTML,这也不是很好 我看到有人建议使用JavaScript模板插件: var t = $.template('<div>

我开发了一个JavaScript月历,所有HTML都是由脚本动态生成的。
优点是,在包含JS和CSS文件之前,HTML只需要一个容器:

<div id="calendar-box"></div>
但在我看来,这并不是最好的解决办法;我通常会尽量减少JavaScript中的语言环境。除此之外,
thead
会产生大量JavaScript生成的HTML,这也不是很好

我看到有人建议使用JavaScript模板插件:

var t = $.template('<div><img src="${url}" />${name}</div>');
它是一个混合解决方案,但允许通过服务器端模板管理区域设置。
您对此有何看法?

这是性能和可用性之间的一条细线。您使用的javascript越多,客户端就越复杂。您选择的硬编码方法和多文件解决方案越多,维护一切可能就越复杂和混乱。计算能力通常不再是问题,但我们有所有的移动和平板电脑客户端,有时操作系统和浏览器都过时了。如果你想支持所有这些,我会尽量少用javascript

如果你的日历只显示在一个地方,并且从不改变它的位置或外观,我建议你对它进行硬编码,然后根据用户选择的语言只更改区域设置。如果使用php,只需像javascript方法一样使用正确的配置包含所需的语言文件,然后直接将变量放在所需的位置即可。如果情况正好相反,请编写一个完全基于javascript的模块来生成日历,并使用php在服务器端包含一个javascript语言环境文件,然后使用它

语言EN.php:

<?php
  return array(
    "monthNames" => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
    "weekDayNames" => array('Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'),
    "closeText" => 'Close' // text to display in the "close" button
  );
?>

index.php

<?php
  $LOCALES = include("language-EN.php");
?>

...

<table class="calendar">
<thead>
    <tr>
        <td colspan="2"><a href="#">&larr;</a></td>
        <td colspan="3">
            <div class="month">June</div><div class="year">2013</div>
        </td>
        <td colspan="2"><a href="#">&lrarr;</a></td>
    </tr>
    <tr class="weekDays">
        <td><?php echo $LOCALES['weekDayNames'][0] ?></td><td><?php echo $LOCALES['weekDayNames'][1] ?></td><td><?php echo $LOCALES['weekDayNames'][2] ?></td><td><?php echo $LOCALES['weekDayNames'][3] ?></td><td><?php echo $LOCALES['weekDayNames'][4] ?></td><td><?php echo $LOCALES['weekDayNames'][5] ?></td><td><?php echo $LOCALES['weekDayNames'][6] ?></td>
    </tr>

...

...
2013年6月2日
...
<?php
  return array(
    "monthNames" => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
    "weekDayNames" => array('Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'),
    "closeText" => 'Close' // text to display in the "close" button
  );
?>
<?php
  $LOCALES = include("language-EN.php");
?>

...

<table class="calendar">
<thead>
    <tr>
        <td colspan="2"><a href="#">&larr;</a></td>
        <td colspan="3">
            <div class="month">June</div><div class="year">2013</div>
        </td>
        <td colspan="2"><a href="#">&lrarr;</a></td>
    </tr>
    <tr class="weekDays">
        <td><?php echo $LOCALES['weekDayNames'][0] ?></td><td><?php echo $LOCALES['weekDayNames'][1] ?></td><td><?php echo $LOCALES['weekDayNames'][2] ?></td><td><?php echo $LOCALES['weekDayNames'][3] ?></td><td><?php echo $LOCALES['weekDayNames'][4] ?></td><td><?php echo $LOCALES['weekDayNames'][5] ?></td><td><?php echo $LOCALES['weekDayNames'][6] ?></td>
    </tr>

...