Q
何时使用玉模板?
3
A
回答
3
想象一下,您有一个应用程序计算服务器端的某些值,例如聊天室中的房间列表。
然后你有2个合理的解决方案:
- 发送这些数据作为JSON为了让一些JavaScript客户端建立列表
- 生成HTML服务器端列表
一模板系统对于第二种解决方案非常有用。
要生成这个HTML,而不是让你的nodejs程序连接HTML片段,模板引擎是一个很好的解决方案。
服务器会生成数据(这里使用的快递和获取从关系数据库中的数据)的JS部分:
app.get('/rooms', ensureAuthenticated, ensureCompleteProfile, function(req, res){
db.on(req.user.id)
.then(function(uid){
return [
this.listAccessibleRooms(uid),
this.fetchUserPingRooms(uid, 0)
]
}).spread(function(accessibleRooms, pings){
var rooms = {public:[], private:[]};
accessibleRooms.forEach(function(r) {
r.path = roomPath(r);
rooms[r.private?'private':'public'].push(r);
});
res.render('rooms.jade', { rooms:rooms, pings:pings });
}).finally(db.off);
});
和玉器文件将使用它们:
table.list
each room, i in rooms.public
tr
th: a(href=room.path) #{room.name}
td.rendered #{room.description}
if room.auth
td.role= room.auth
它生成这种HTML:
<table class="list">
<tr>
<th><a href="path1">Room 1</a></th>
<td class="rendered">Description of room 1</td>
<td class="role">Admin</td>
</tr>
<tr>
<th><a href="path2">Room 2</a></th>
<td class="rendered">Description of room 2</td>
</tr>
</table>
这分开了一些关注点正在管理数据并显示它们。它的优点是不会与HTML差别太大,在我看来,HTML的目标是生成HTML。
本示例摘自my open source Miaou chat。完整的Jade文件是rooms.jade。
0
模板引擎也可以用来
服务器端的MVC框架
很像丹尼斯提供的快递例子。
例如:ASP.NET MVC's Razor,Laravel's Blade ...
静态网站发生器
生成动态内容(JSON,一个数据库,...)静态站点。如果您不能使用服务器端语言或不想付费,这很有用。
例如:Jekyll's Liquid,...
的发票应用
模板引擎生成HTML,然后将其转化为pdf。或者任何其他生成pdf的应用程序。
相关问题
- 1. 如何玉模板
- 2. d3玉模板
- 3. 在玉模板
- 4. 如何在玉模板
- 5. 在玉模板datepicker
- 6. 玉模板继承
- 7. 玉模板从SemanticUI
- 8. 插入元使用玉模板引擎
- 9. 在玉石模板中使用coffeescript
- 10. 使用玉如铁轨模板?
- 11. 使用玉环的下划线模板
- 12. 玉模板if语句
- 13. 玉模板引擎错误
- 14. 玉模板:巢混入
- 15. 嵌套的玉模板黑
- 16. 一个类的玉模板
- 17. Jade.escape是编译玉模板
- 18. 玉模板 - SELECT OPTION与
- 19. 帕格(玉)模板:在CDN
- 20. 玉模板不包括CSS
- 21. 空白在AngularJS玉模板
- 22. 小写与玉模板
- 23. 如何使用jQuery/JavaScript的用玉模板引擎
- 24. 如何repruduce IE玉模板破解
- 25. 如何呈现多个玉石模板
- 26. 如何将值传递给玉模板
- 27. 如何将变量从玉器加载到玉模板文件?
- 28. 如何使用早午餐将玉石模板渲染为HTML
- 29. 玉器模板引擎,如何使用layout.jade?
- 30. 如何在玉模板中使用else语句?
@destroy,感谢您的信息。看起来像一个很好的学习曲线NodeJS + Express + Jade :) –
在我个人看来,一个复杂的应用程序将使用这两种解决方案:发送一些数据作为json(在ajax中,或使用websocket)或使用Jade生成静态HTML。当我需要在JS客户端处理数据时,我也有时使用Jade以一种混合的方式在页面中嵌入JSON:https://github.com/Canop/miaou/blob/master/views/login .jade#L20 –
发生故障时,可以在客户端和服务器端使用jade,因此您可以将数据作为json发送到客户端,并在其中呈现html以插入它。 Jade适合两种情况。 – alex