Node.js博客实例(四)实现用户页面和文章页面_html/css_WEB-ITnose
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Node.js博客实例(四)实现用户页面和文章页面_html/css_WEB-ITnose,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2651字,纯文字阅读大概需要4分钟。
内容图文
![Node.js博客实例(四)实现用户页面和文章页面_html/css_WEB-ITnose](/upload/InfoBanner/zyjiaocheng/399/8fc22172b76e4375a3166b60b7d472f4.jpg)
现在,我们来给博客添加用户页面和文章页面。
所谓用户页面就是当点击某个用户名链接时,跳转到:域名/u/用户名 ,并列出该用户的所有文章。
同理,文章页面就是当点击某篇文章标题时,跳转到:域名/u/用户名/时间/文章名 ,进入到该文章的页面。
post.js:
将 Post.get 修改为 Post.getAll ,同时将 index.js 中 Post.get 修改为 Post.getAll 。在 post.js 最后添加如下代码:
//获取一篇文章Post.getOne = function(name, day, title, callback) { //打开数据库 mongodb.open(function (err, db) { if (err) { return callback(err); } //读取 posts 集合 db.collection('posts', function (err, collection) { if (err) { mongodb.close(); return callback(err); } //根据用户名、发表日期及文章名进行查询 collection.findOne({ "name": name, "time.day": day, "title": title }, function (err, doc) { mongodb.close(); if (err) { return callback(err); } console.log("333"); console.log(doc); //解析 markdown 为 html doc.post = markdown.toHTML(doc.post); console.log("444"); callback(null, doc);//返回查询的一篇文章 console.log("555"); }); }); });};Post.getAll :获取一个人的所有文章(传入参数 name)或获取所有人的文章(不传入参数)。
Post.getOne :根据用户名、发表日期及文章名精确获取一篇文章。
index.js :添加如下代码:
app.get('/u/:name', function (req, res) { //检查用户是否存在 User.get(req.params.name, function (err, user) { if (!user) { req.flash('error', '用户不存在!'); return res.redirect('/');//用户不存在则跳转到主页 } //查询并返回该用户的所有文章 Post.getAll(user.name, function (err, posts) { if (err) { req.flash('error', err); return res.redirect('/'); } res.render('user', { title: user.name, posts: posts, user : req.session.user, success : req.flash('success').toString(), error : req.flash('error').toString() }); }); }); }); app.get('/u/:name/:day/:title', function (req, res) { Post.getOne(req.params.name, req.params.day, req.params.title, function (err, post) { if (err) { req.flash('error', 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() }); }); });在 blog/views/ 文件夹下新建 user.ejs,添加如下代码,同时也将 index.ejs 也修改成如下代码:
<%- include header %><% posts.forEach(function (post, index) { %>/<%= post.time.day %>/<%= post.title %>"><%= post.title %>
作者:"><%= post.name %> | 日期:<%= post.time.minute %>
<%- post.post %>
<% }) %><%- include footer %>
在 blog/views/ 文件夹下新建 article.ejs ,添加如下代码:
<%- include header %>现在,我们给博客添加了用户页面和文章页面。实现效果:作者:"><%= post.name %> | 日期:<%= post.time.minute %>
<%- post.post %>
<%- include footer %>
点击文章标题:
点击作者:
内容总结
以上是互联网集市为您收集整理的Node.js博客实例(四)实现用户页面和文章页面_html/css_WEB-ITnose全部内容,希望文章能够帮你解决Node.js博客实例(四)实现用户页面和文章页面_html/css_WEB-ITnose所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。