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">
   128   129   130   131   132   133   134   135   136   137   138