我对整个javascript全堆栈应用程序都是新手,对Angular来说也是全新的,所以我希望有人能在这里纠正我的错误。
在使用AngularJS编写客户端应用程序时,我为什么需要使用像Jade或Handlebar这样的模板框架?
我应该说,我也从未使用过这些模板框架。所以我并不完全熟悉它的优点。但是当我以车把为例,它做的很多事情和我在Angular中做的一样,比如循环等等。
据我所知,使用适当的HTML在Angular中创建模板,然后在客户端执行所有模板操作,并结合使用node和mongo的API first方法,这将是最有意义的。
造成这种混乱的原因是,我在GitHub上找到的许多示例都使用了Jade,这似乎与我的直觉相反。
请开导我,纠正我的错误。我很想从比我了解得更多的人那里学到一些最佳实践。
谢谢
发布于 2013-08-12 03:06:06
我使用Jade来生成AngularJS使用的模板,因为我讨厌编写普通的超文本标记语言。它看起来像这样:
.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干净得多。
发布于 2014-05-19 12:06:26
您可以通过Jade包含angular模板。
script(type="text/ng-template", id="admin")
include partials/admin
对于缓存模板,我认为这比在javascript文件中包含转义模板要容易得多。
请参阅:https://docs.angularjs.org/api/ng/service/$templateCache
发布于 2015-03-15 21:57:10
Jade绝对比Haml更接近html。因此,上下文切换实际上是非常小的。然而,它并不是完全不存在的。这对开发人员来说可能根本无关紧要。但是当你的设计者问你如何让嵌套标签正常工作时,你是在解决你首先创建的一个不必要的问题。
HTML仍然可以写得非常清晰,可以使用分词来使其更容易理解。500行任何东西都很难读懂--不管是Jade还是HTML。
这是一个Jade模板
.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
<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。(可能不是。但证明这不值得努力)
https://stackoverflow.com/questions/18174856
复制相似问题