javascript - 避免模​​板代码冗余

标签 javascript handlebars.js pug mustache hogan.js

我主要是网络开发和 javascript/nodejs/expressjs 的初学者,我一直面临着一个困扰我几个月的问题,我找不到一个不太复杂的解决方案或太杂乱;在 View 中,我有 3 个框架,在这三个框架中,我需要列出一个对象数组,所有三个框架具有相同的数据结构,但具有不同的值,并且我需要根据其值突出显示某些对象使用html,当时我使用jade,重复“if ... else ... case ...”的相同链三次,我尝试切换到handlebars/hogan.js并过滤数据添加在渲染之前每种情况都有特定的 html 结构,但我最终创建了另一个困惑,使得在快速更改 View 的视觉效果时变得相当困难和困惑,因为我仍处于应用程序前端的早期开发阶段,这会是什么使用 Mustache(hogan)/handlebars/jade 完成任务的最简单方法/方法?

我在 Jade 方面遇到的冗余的例子; (原始代码中有更多的 if...else... 以及更大的 html 结构)

div(class='frame red'
    for object in array
        if object.annex
            case object.annex.type
                when 1
                    i object.annex.text
                when 2
                    b object.annex.text
                when 3
                    span(class='normal') object.annex.text
        else
            case object.type
                when 1
                    i object.text
                when 2
                    b object.text
                when 3
                    span(class='normal') object.text

div(class='frame blue')
    for object in array
        if object.annex
            case object.annex.type
                when 1
                    i object.annex.text
                when 2
                    b object.annex.text
                when 3
                    span(class='normal') object.annex.text
        else
            case object.type
                when 1
                    i object.text
                when 2
                    b object.text
                when 3
                    span(class='normal') object.text

最佳答案

用dust.js做的,这样调用它;

<div class='frame red'>

  {#array}

    {#annex}

      {>"partials/object"/}
    {/annex}

    {>"partials/object"/}
  {/array}

</div>

<div class='frame blue'>

  {#array}

    {#annex}

      {>"partials/object"/}
    {/annex}

    {>"partials/object"/}
  {/array}

</div>

partials/object.dust 中的逻辑;

{@select key=type}

  {@eq value=1}
    <i>{text}</i>
  [/eq}

  {@eq value=2}
    <b>{text}</b>
  {/eq}

  {@default} // when type is null
    <span>{text}{?isAnnex}, annex.{/isAnnex}</span>
  {/default}

{/select}

关于javascript - 避免模​​板代码冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27019425/

相关文章:

javascript - 在 Jade 中内联 Javascript,同时保持缩进

javascript - 在显示选项卡之前防止整页闪烁

Javascript 全局对象

javascript - EasleJS Canvas 不显示指定的 Google 字体

javascript - 在 div 内渲染 Handlebars 脚本

ember.js - 如何在ember-model中使用belongsTo?

javascript - 键必须是非空字符串,不能包含 "."、 "#"、 "$"、 "/"、 "["或 "]"

javascript - 在代码中调用外部加载的javascript函数

javascript - Handlebars 不会在我的 Backbone.js 集合上循环

javascript - 我应该如何在数据库中存储哈巴狗格式的内容?