当前位置:编程学习 > JS >>

nodejs--express开发博客系统

 
 
[html]  
<a href="/<%= post.user %>/<%= post.time.day%>/<%= post.title %>"><%= post.title %></a>  
     根据这个链接地址,进入文章页面的路由控制就可以写成这样:
[javascript] 
app.get('/:user/:time/:title', function(req,res){  
    User.get(req.params.user,function(err, user){  
        Post.getOne(req.params.user, req.params.time, req.params.title, function(err, post){//还记得post.js里面获取文章的函数吧?  
            if(err){  
                req.flash('err',err);   
                return res.redirect('/');  
            }  
            res.render('article',{  
                title: req.params.title,  
                post: post,  
                user: req.session.user,  
                success: req.flash('success').toString(),  
                error: req.flash('error').toString()  
            });  
        });  
    });  
});  
    接下来写文章页面的视图 article.ejs
[html 
<%- include header %>  
<p><h2><a href="/<%= locals.post.user %>/<%= locals.post.time.day %>/<%= locals.post.title %>"><%= locals.post.title %></a></h2></p>  
<p class="info">  
    作者:<a href="/<%= locals.post.user %>"><%= locals.post.user %></a> |  
    日期:<%= locals.post.time.minute %>   
</p>  
<p><%- locals.post.post %></p>  
<p class="info">阅读:<%= locals.post.pv %> | 评论:<%= locals.post.comments.length %>  
<%- include footer %>  
进入主页点击文章标题看看效果吧?
 
         发现问题了吧?样式都没有了,原因先不说,说完解决方法之后你就明白了:
 
        把header.ejs中引入style.css的路径写成这样:
 
[html]  
<link rel="stylesheet" href="/stylesheets/style.css">  
      好了,ok了!
     现在在文章页面后面加上评论,完整的article.ejs为:
 
[html]  
<%- include header %>  
<p><h2><a href="/<%= locals.post.user %>/<%= locals.post.time.day %>/<%= locals.post.title %>"><%= locals.post.title %></a></h2></p>  
<p class="info">  
    作者:<a href="/<%= locals.post.user %>"><%= locals.post.user %></a> |  
    日期:<%= locals.post.time.minute %>   
</p>  
<p><%- locals.post.post %></p>  
<p class="info">阅读:<%= locals.post.pv %> | 评论:<%= locals.post.comments.length %>  
  
<br /><br />  
<% if(locals.post.comments){ %>  
<% locals.post.comments.forEach(function(comment, index){ %>  
    <p><a href="/<%= comment.website %>"><%= comment.name %></a>  
    <time>回复于 <%= comment.time %></time></p>  
    <p><%- comment.content %></p>  
<% }) %>  
<% } %>  
  
  
<form method="post">  
<% if(!locals.user){ %>  
姓名:<input type="text" name="name" /><br />  
邮箱:<input type="text" name="email" /><br />  
网址:<input type="text" name="website" /><br />  
<% } %>  
留言:<br /><textarea name="content" rows="5" cols="80"></textarea>  
      <br /><input type="submit" value="留言" />  
</form>  
<%- include footer %>  
      评论视图有了,下面就是处理过程了,在app.get("/:user/:time/:title",function(){})后面添加:
[javascript] 
app.post('/:user/:time/:title', function(req,res){  
    var comment = null,  
        date = new Date(),  
        time = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();  
    if(req.session.user){  
        var name=req.session.user.name;  
        comment = {"name":name, "email":name+"@gmail.com", "website":"www."+name+".com", "time":time, "content":req.body.content}  
    } else {  
        comment = {"name":req.body.name, "email":req.body.email, "website":req.body.website, "time":time, "content":req.body.content}  
    }  
    var oneComment = new Comment(req.params.user, req.params.time, req.params.title, comment);  
    oneComment.save(function(err){  
        if(err){  
            req.flash('error', err);   
            return res.redirect('/');  
        }  
        req.flash('success', '评论成功!');  
        res.redirect('back');//这句话的作用是评论成功后返回到被评论文章  
    });  
});  
      作者页面和文章页面是类似的,点击作者名字,显示该作者的所有文章。
       作者页面路由控制:
 
[javascript]  
app.get('/:user', function(req,res){  
        User.get(req.params.user, function(err, user){  
        if(!user){  
            return res.redirect('/');  
        }  
  补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,