Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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程序的模板或类似文件_Javascript_Html_Templates - Fatal编程技术网

浏览器中JavaScript程序的模板或类似文件

浏览器中JavaScript程序的模板或类似文件,javascript,html,templates,Javascript,Html,Templates,我已经做了很多服务器端HTML编程,并使用了许多不同的模板语言来生成(X)HTML。这部分我很清楚 但我想知道的是,人们如何在客户端JavaScript程序中使用它?我的意思是,很明显,可以在浏览器中使用为JavaScript编写的模板语言,但是人们通常是这样做的吗?还是人们只是直接操纵DOM?或者有一些大多数人使用的很好的助手库吗 举个例子——假设我需要一个JavaScript应用程序,它从远程服务器获取联系人卡列表,并作为JSON对象返回。然后,我想使用某些预定义的HTML标记在浏览器端显示

我已经做了很多服务器端HTML编程,并使用了许多不同的模板语言来生成(X)HTML。这部分我很清楚

但我想知道的是,人们如何在客户端JavaScript程序中使用它?我的意思是,很明显,可以在浏览器中使用为JavaScript编写的模板语言,但是人们通常是这样做的吗?还是人们只是直接操纵DOM?或者有一些大多数人使用的很好的助手库吗


举个例子——假设我需要一个JavaScript应用程序,它从远程服务器获取联系人卡列表,并作为JSON对象返回。然后,我想使用某些预定义的HTML标记在浏览器端显示此联系人卡,并在必填字段中填充这些标记。这通常是怎么做的?

你说得对。有用于JavaScript的模板库。如果它足够简单,可以将HTML创建为字符串并添加到DOM中,此时浏览器将显示它


以下是John Resig的微模板库:

人们通常有多种方法来实现这一点:

  • 将html存储在执行ajax调用时从服务器获取的文件中,然后将其插入DOM中
  • 获取所需的动态内容,然后将所有HTML组装回客户端,并将其插入DOM(这可能是最常见的,也是我建议最少的)
    • 使用javascript模板语言(我相当喜欢jquery的插件)

还有其他解决方案,例如将要标记的内容隐藏在文本区域或html脚本标记中,但我不喜欢它们,因为它们往往会产生错误/无效的标记。

您描述的任务可以通过模板系统或手动DOM操作来完成,正如在服务器端这样做可以通过模板系统或一系列字符串连接来完成。就个人而言,如果我必须问这个问题,我通常会使用模板系统。(事实上,如果您认为大多数语言中的Prtff样式格式是模板系统,我几乎不使用字符串而不使用模板。)< /P> 我知道的几种JavaScript模板语言包括:

  • 朱格尔:
  • ExtJS模板:
  • 闭包模板:

闭包模板的有趣之处在于,它还有一个服务器端呈现程序,因此您可以在服务器端代码和JavaScript之间共享模板。jugl与TAL非常相似,因此您也可以使用jugl实现这一点。

我建议使用ExtJS XTemplates。简单、强大、独立、美观-我仔细检查了这里提出的解决方案,并不是完全满意。我学到的是:

  • 大多数人只是将字符串拼凑在一起,然后将它们分配给
    elem.innerHTML
    。这对我来说太难看了
  • 有些人使用
    Builder
    对象构建DOM,因此实际上他们是在用JavaScript为动态内容编写HTML。如果内容是100%动态的,我会使用这一点,但在这种情况下,我更希望有可以自定义的html模板
  • 有些人在客户端JavaScript上使用实际的模板语言。也就是说,有各种各样的if构造、while构造和字符串替换等等。这就是我写这个问题时想要的。仅此而已,当您拥有整个DOM引擎时,解析文本标记客户端似乎效率低下
<>但是,我发现自己真正想要的是一种从DOM片段中拼凑HTML的编程方法,并在中间填充所需的数据。我找到了两种解决方案:

  • 纯:
  • 使用cloneNode的简易Javascript模板:
在这些中,我选择了纯的来满足我的需要


谢谢所有的答案。

如果你正在使用,你可能想考虑,一个强类型的、超高效的HTML模板引擎。谢谢。里面有一个bug(这里修复了):嘿,我写了《暴风雨》!酷,谢谢你的表扬!