【问题标题】:Using Script Tags As A Template System使用脚本标签作为模板系统
【发布时间】:2015-05-16 15:13:04
【问题描述】:

** 修订 **

我做了这个基本的例子,我相信它可以证明 JavaScript 作为它自己的模板引擎可能很有用: http://jsfiddle.net/julienetienne/u6akrx7j/

<script>talk[0].text('Hello World!');</script>

这只是一个简单的示例,但您可以看到有很多可能性,例如。

  • 不一定非要以这种方式检测标签节点,它可以按类、id 来检测。也可以获取函数的脚本节点,
  • 您可以简单地打印变量,例如 p('Page Title');
  • 元素的自闭合列表可能类似于例如li('', 菜单);
  • 您可以像使用任何其他通用模板引擎一样清楚地构建其他复杂数据集。

在此编辑之前,我犯了将其与 PHP 进行比较的错误。我实际上正在考虑更多地替代例如车把下划线小胡子灰尘等。

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

有机模板系统的好处似乎很明显。最大的优点是无需学习语法,而且比看到 %{{foobar}}% 之类的标记更干净。

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

谢谢

【问题讨论】:

    标签: javascript html dom template-engine


    【解决方案1】:

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

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

    如果您使用的div 比已经存在的更多,则文本将出现在完全不同(并且可能是错误的)位置。

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

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

    【讨论】:

    • 感谢您的回复,但我意识到我的问题不够具体,我会进行一些修改,因为我承认我完全不清楚我想要找出什么。
    • 也许最大的缺点是,没有优势。我仍然不明白你想如何定义标记。除了您将脚本分成多个部分之外,与常规 javascript 的区别在哪里......这实际上并不是一个优势。您可能需要展示一个概念,其中脚本本身知道它是父脚本容器。我认为这是不可能的。
    • 这样看起来更有希望,但我仍然认为脚本标签不是必需的,因为您仍在使用查询选择器。在 div 中设置 id(或任何其他属性)就足够了。我在这里做了一个小提琴:jsfiddle.net/q2uuef8m/1 我在
    • 这很有帮助,它显示了数据、模板和逻辑的分离。我知道这确实是基本的东西,但是许多临时引擎都是矫枉过正的,并不是真正的逻辑少。我相信通过 data-* 属性的模板框架可能是一个很好的方法来做一些事情,比如添加标题、创建复杂的列表、表格等等。例如, 作为一个基本示例。我认为最好在客户端完成,因为它可以保存请求。我认为我现在有正确的想法,感谢示例
    • 当然,我会在确定的时候通知您,谢谢。它将是开源的并且重量很轻。主要目标是真正看看是否有更本地的方式来制作模板,不会在这里重新发明轮子;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2013-01-08
    • 2011-05-02
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多