Page 133 - Node.js开发指南
P. 133
126 第 5 章 使用 Node.js 进行 Web 开发
5.7.3 用户页面
用户页面的功能是展示用户发表的所有内容,在routes/index.js中加入以下代码:
app.get('/u/:user', function(req, res) {
User.get(req.params.user, function(err, user) {
if (!user) {
req.flash('error', '用户不存在');
return res.redirect('/');
}
Post.get(user.name, function(err, posts) {
if (err) {
req.flash('error', err);
return res.redirect('/');
}
res.render('user', {
title: user.name,
posts: posts,
});
});
});
});
它的功能是首先检查用户是否存在,如果存在则从数据库中获取该用户的微博,最后通
过 posts 属性传递给 user 视图。views/user.ejs 的内容如下:
<% if (user) { %>
<%- partial('say') %>
<% } %>
<%- partial('posts') %>
根据 DRY 原则,我们把重复用到的部分都提取出来,分别放入 say.ejs 和 posts.ejs。say.ejs
的功能是显示一个发表微博的表单,它的内容如下:
<form method="post" action="/post" class="well form-inline center" style="text-align:
center;">
<input type="text" class="span8" name="post">
<button type="submit" class="btn btn-success"><i class="icon-comment icon-white">
</i> 发言</button>
</form>
posts.ejs 的目的是按照行列显示传入的 posts 的所有内容:
<% posts.forEach(function(post, index) {
if (index % 3 == 0) { %>
<div class="row">
<%} %>
<div class="span4">