资讯专栏INFORMATION COLUMN

[node.js]《Nodejs开发指南》 微博项目实现

Lowky / 1055人阅读

摘要:开发指南原有的下载地址失效了,想要的朋友可以戳我项目完整代码一个基于和的简单微博项目,具体描述详见开发指南。改为其中书中使用来实现服务器返回信息的显示,但是该方法在很久之前被废除。

Nodejs开发指南PDF(原有的下载地址失效了,想要pdf的朋友可以戳我):
http://wenku.baidu.com/link?url=RSy6donQq0guPBwwFZiWjPGJzzINmuierqZJr9ZMxfivll2gw2AtK9SNu_BGAsEBq5-WMyaZwzpQeDoyWM_t67eLOCsHOnhO5LF4onWva8y

项目完整代码:
https://github.com/chnmagnus/MBlog

一个基于express和mongodb 的简单微博项目,具体描述详见《Nodejs开发指南》。
网上也有一些该项目实现的代码,但是基本都是几年前的= =,许多代码都无法运行,各种search之后终于用各种最新版本的代码实现了这一项目,特此记录,分享。


简单说一下我的代码相对书中代码的变化:

1.ejs模板,layout.js被废弃,所以我使用include来提升代码的复用性。
将html代码的head及nav部分放在header.ejs中,将页脚部分放在footer.ejs中,然后在需要的部分使用<%- include header.ejs %>的方式来进行引入。


2.app.METHOD(URL,function) 改为 app.use(URL,routes);
其中var routes = require("./routes/index");


3.书中使用req.flash()来实现服务器返回信息的显示,但是该方法在很久之前被废除。
解决方法一:
如果想继续使用req.flash(),需要require("connect-flash")模块(https://github.com/jaredhanso...),但这个模块也已三年没有更新过了= =,我并不确定是否能用。
解决方法二:
我是使用了res.locals.xxx;以及添加中间件的方式来进行信息的反馈。在需要返回信息给客户端的位置,例如登录成功时,使用如下代码:

res.lacals.result = "登录成功";
res.redirect("/");

配合app.js中的部分代码:

var session = require("express-session");
var MongoStore = require("connect-mongo")(session);
//...
app.use(session({
  name: settings.name,
  secret: settings.secret,
  cookie: {
    maxAge: 1000*60*30
  },
  store: new MongoStore({
    url: settings.url
  })
}));
//...
//这部分代码是放在对具体路径进行处理之前的
app.use(function (req,res,next) {
  res.locals.user = req.session.user;
  var result = req.session.result;
  delete req.session.result;
  res.locals.message = ""; 
  if(result){
    res.locals.message = result;
  }
  next();//中间件传递
});

当然,不要忘记修改ejs模板,在开头添加代码用来显示反馈信息:

 <% if (message) { %>
  
<%= message %>
<% } %>

效果如下图:


4.使用了官方推荐的MongoClient方式来进行数据库的连接,关于这种方式的模块化,我也存有困惑,在segmentfault上提过问题= =,没有得到回答,自己摸索着解决的,可以看我的提问。

大概就是这样,共勉,一起努力= =

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18822.html

相关文章

  • node.js中文资料导航

    摘要:中文资料导航官网七牛镜像深入浅出系列进阶必读中文文档被误解的编写实战系列热门模块排行榜,方便找出你想要的模块多线程,真正的非阻塞浅析的类利用编写异步多线程的实例中与的区别管道拒绝服务漏洞高级编程业界新闻看如何评价他们的首次尝鲜程序员如何说服 node.js中文资料导航 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系列(进阶必读) Nod...

    geekidentity 评论0 收藏0
  • GitHub 值得收藏的前端项目[每月更新...]

    摘要:也是一款优秀的响应式框架站点所使用的一套框架为微信服务量身设计的一套框架一组很小的,响应式的组件,你可以在网页的项目上到处使用一个可定制的文件,使浏览器呈现的所有元素,更一致和符合现代标准。 GitHub 值得收藏的前端项目 整理与收集的一些比较优秀github项目,方便自己阅读,顺便分享出来,大家一起学习,本篇文章会持续更新,版权归原作者所有。欢迎github star与fork 预...

    maxmin 评论0 收藏0
  • 7月份前端资源分享

    摘要:更多资源请文章转自月份前端资源分享的作用数组元素随机化排序算法实现学习笔记数组随机排序个变态题解析上个变态题解析下中的数字前端开发笔记本过目不忘正则表达式聊一聊前端存储那些事儿一键分享到各种写给刚入门的前端工程师的前后端交互指南物联网世界的 更多资源请Star:https://github.com/maidishike... 文章转自:https://github.com/jsfr...

    pingan8787 评论0 收藏0
  • 后端知识点总结——NODE.JS基础

    摘要:后端知识点总结基础不是是一种软件开发平台,它的竞争对象历史第一次有一种语言可以通吃前后端网站阿里云镜像版本年初年中年底最新版本功能强大可靠,适合大型企业级项目简单易用适合互联网项目易用适合平台性能好适合服务器端密集型项目不适合密集型项目密集 后端知识点总结——NODE.JS基础 1.Node.js Node.js不是JS,是一种软件开发平台,它的竞争对象JSP/PHP/ASP.NET...

    Freeman 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<