首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编写AngularJs应用程序时,Jade或Handlebar的用途是什么

编写AngularJs应用程序时,Jade或Handlebar的用途是什么
EN

Stack Overflow用户
提问于 2013-08-12 01:47:39
回答 4查看 47.3K关注 0票数 121

我对整个javascript全堆栈应用程序都是新手,对Angular来说也是全新的,所以我希望有人能在这里纠正我的错误。

在使用AngularJS编写客户端应用程序时,我为什么需要使用像Jade或Handlebar这样的模板框架?

我应该说,我也从未使用过这些模板框架。所以我并不完全熟悉它的优点。但是当我以车把为例,它做的很多事情和我在Angular中做的一样,比如循环等等。

据我所知,使用适当的HTML在Angular中创建模板,然后在客户端执行所有模板操作,并结合使用node和mongo的API first方法,这将是最有意义的。

造成这种混乱的原因是,我在GitHub上找到的许多示例都使用了Jade,这似乎与我的直觉相反。

请开导我,纠正我的错误。我很想从比我了解得更多的人那里学到一些最佳实践。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2013-08-12 03:06:06

我使用Jade来生成AngularJS使用的模板,因为我讨厌编写普通的超文本标记语言。它看起来像这样:

代码语言:javascript
复制
.control-group(
  ng-form
  name='emailGroup'
  ng-class='{"ng-error": emailGroup.$invalid}'
)
  label.control-label Email
  .controls
    input(
      type='email'
      ng-model='user.email'
      required
      placeholder='you@example.com'
      focus-on='focusEmail'
    )

…我认为它比普通的HTML干净得多。

票数 63
EN

Stack Overflow用户

发布于 2014-05-19 12:06:26

您可以通过Jade包含angular模板。

代码语言:javascript
复制
script(type="text/ng-template", id="admin")
  include partials/admin

对于缓存模板,我认为这比在javascript文件中包含转义模板要容易得多。

请参阅:https://docs.angularjs.org/api/ng/service/$templateCache

票数 2
EN

Stack Overflow用户

发布于 2015-03-15 21:57:10

Jade绝对比Haml更接近html。因此,上下文切换实际上是非常小的。然而,它并不是完全不存在的。这对开发人员来说可能根本无关紧要。但是当你的设计者问你如何让嵌套标签正常工作时,你是在解决你首先创建的一个不必要的问题。

HTML仍然可以写得非常清晰,可以使用分词来使其更容易理解。500行任何东西都很难读懂--不管是Jade还是HTML。

这是一个Jade模板

代码语言:javascript
复制
.product-container

    .input-group.msB.col-md-5.no-padding
        .fnt-light-navyblue.mtB(for='name')
            strong Name the sticker
        input.full-input(type='text', placeholder='Awesome Batman Sticker')
    .clear

    .form-group.mmT
        label.form-label.fnt-light-navyblue
            strong Choose size
        .selector-group(ng-repeat="size in sizes", ng-class="{ 'msT': !$first}")
            - raw
            span.radio
                input.radio(name='choose_sticker_size',
                            ng-model="selectedSize",
                            type='radio',
                            value='{{size}}',
                            id="sticker-{{size}}")
                span.fake-radio
            label(for='sticker-{{size}}') {{size}} inch
            - endraw
    // end form-group
    .clear

和等效的HTML

代码语言:javascript
复制
<div class="product-container">

    <div class="input-group msB col-md-5 no-padding">
        <div for="name" class="fnt-light-navyblue mtB">
            <strong>Name the product</strong>
        </div>
        <input type="text" placeholder="Awesome Batman Sticker" class="full-input" />
    </div>
    <div class="clear"></div>

    <div class="form-group mmT">
        <label class="form-label fnt-light-navyblue">
            <strong>Choose size</strong>
        </label>
        <div
            class="selector-group"
            ng-class="{ 'msT': !$first}"
            ng-repeat="size in sizes">
                {% raw %}
                <span class="radio">
                    <input
                        id="sticker-{{size}}"
                        class="radio"
                        name="choose_sticker_size"
                        ng-model="selectedSize"
                        type="radio"
                        value="{{ size }}" />
                    <span class="fake-radio"></span>
                </span>
                <label for="sticker-{{size}}">{{size}}</label>
                {% endraw %}
        </div>
    </div><!-- end form-group -->
    <div class="clear"></div>
</div>

当写得清晰的时候,我并不认为HTML是非常不利的,以保证转换。果然,有棱角的括号很难看。但我更愿意拥有它们,而不是不得不处理设计师的疑虑,即我引入的间接性是否破坏了html。(可能不是。但证明这不值得努力)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18174856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档