Javascript 使用脚本标记作为模板系统

Javascript 使用脚本标记作为模板系统,javascript,html,dom,template-engine,Javascript,Html,Dom,Template Engine,**修订版** 我举了一个基本的例子,我认为这表明JavaScript作为自己的模板引擎可能很有用: talk[0]。文本('Hello World!'); 这只是一个简单的例子,但正如你所看到的,有很多可能性 它不一定要以这种方式检测标记节点,它可以通过类id进行检测。还可以获取函数的脚本节点 您可以简单地打印变量,如p(“页面标题”) 元素的自动关闭列表可以类似于li(“”,菜单) 您可以像使用任何其他通用模板引擎一样,清楚地构建其他复杂的数据集 在此编辑之前,我错误地将其与PHP进

**修订版**

我举了一个基本的例子,我认为这表明JavaScript作为自己的模板引擎可能很有用:

talk[0]。文本('Hello World!');
这只是一个简单的例子,但正如你所看到的,有很多可能性

  • 它不一定要以这种方式检测标记节点,它可以通过类id进行检测。还可以获取函数的脚本节点
  • 您可以简单地打印变量,如p(“页面标题”)
  • 元素的自动关闭列表可以类似于li(“”,菜单)
  • 您可以像使用任何其他通用模板引擎一样,清楚地构建其他复杂的数据集
在此编辑之前,我错误地将其与PHP进行了比较。事实上,我认为它更像是一种替代品,例如车把下划线胡子灰尘

但在我兴奋之前,我真的很想知道在这种方式下使用是否有任何问题。(我不关心新手的最佳实践)

有机模板系统的好处似乎非常明显。最大的优点是没有语法可学,而且比看到%{{foobar}}}%类标记更简洁

考虑到我的示例只是一个极小的简约概念,请告诉我与普通模板引擎相比,这种系统的缺点。


谢谢

它看起来像是一个PHP风格的模板系统,但显然不是: 在小提琴中,脚本部分可以写在页面的任何地方

定义要插入DOM的文本位置的部分由行
var talk=document.getElementsByTagName('div')定义和HTML的结构

如果您使用的
div
比已经存在的多,那么文本将出现在完全不同的位置(据说是错误的)

因此,缺点是,不能独立于底层标记使用系统。这使得它不同于PHP中的用例,在PHP中,可以通过定义变量在标记中的位置来回显变量


如果您正在寻找如何实现模板系统的方法,请查看Angular或类似的前端框架。

谢谢您的回答,但我意识到我的问题不够具体,我将进行一些编辑,因为我承认我完全不清楚我要查找的内容。也许最大的缺点是,没有优势。我还是不明白你想如何定义标记。除了将脚本拆分为多个部分之外,与常规javascript的区别在哪里。。。这实际上不是一个优势。您可能需要显示一个概念,其中脚本本身知道它的父脚本容器。但是我认为这是不可能的。像这样看起来更有希望,但是我仍然认为脚本标签是不必要的,因为您仍然在使用查询选择器。在div中设置id(或任何其他属性)就足够了。我在这里做了一个小改动:我发现这个概念有几个缺点:1。要写的东西很多。在其他一些模板语言中,您只需编写{{namespace.property}}2。不需要使用脚本标记。如果您的内容来自中心位置,如
var text
。3.如果渲染服务器端,为什么不渲染实际值呢?这很好,它显示了数据、模板和逻辑的分离。我知道这是非常基本的东西,但许多临时'引擎是过度杀伤力,并不是真的逻辑少。我相信通过data-*属性的模板框架可能是一种很好的方法,可以添加标题、创建复杂的列表、表格等等。例如,作为一个基本示例。我认为最好在客户端完成,因为它可以保存请求。我想我现在的想法是对的,谢谢你举个例子。当然,我会让你知道的。谢谢。它将是开源的,而且重量很轻。我们的主要目标是看看是否有一种更自然的方法来制作模板,而不是在这里重新发明轮子;)
<script>talk[0].text('Hello World!');</script>