NodeJS入门篇---Express+MongoDB实现blog----《NodeJS开发指南》爬坑

本人近日由于公司要求开始学习NodeJS,由此开始踏上了NodeJS的爬坑之路,本人此次使用的Express是4.13版,NodeJS是5.5版,小版本忽略。使用WebStrom编程。

本人刚开始学习,给大家的建议,最好不要买书,虽然容易被骂,因为NodeJS更新太快,有些书,以前写的是对的,但是更新后,误导人也蛮坑的。

首先使用webStrom内置Express框架,搭建环境。


创建完成后直接运行。访问127.0.0.1:3000   


至于这个效果如何实现的,就想nodeJS开发指南书中所说下载bootstrap.文件名中带有 min。将 img 目录复制到工程 public 目录下,将 bootstrap.css、
bootstrap-responsive.css 复制到 public/stylesheets 中,将 bootstrap.js 复制到 public/javascripts 目录中,然后http://jquery.com/下载一份最新版的 jquery.js 也放入 public/javascripts 目录中。后面带大家爬坑。

1.如果发现自己layout.ejs一直没有显示在header,你需要检查app.js中:

<span style="font-family:SimSun;font-size:12px;">var partials = require('express-partials');
app.set("view options",{
  "layout":true
});
app.use(partials())</span>
<span style="font-family:SimSun;font-size:12px;">或者index.js中路由情况</span>
<pre style="background-color: rgb(255, 255, 255);"><pre name="code" class="html"><span style="font-family:SimSun;font-size:12px;">router.get('/layout', function(req, res,next) {

  res.render('layout', { title: ''
  
  });
});</span>
<span style="font-family:SimSun;font-size:12px;">2.书中db.js写法 有点问题</span>
<pre name="code" class="html"><span style="font-family:SimSun;font-size:12px;">var settings = require('../settings');
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, '27017', {safe:true}));</span>


 
3.由于版本升级过快我写的时候session中的user/success is not definded,让我头疼,最终我是这样写的

 
<span style="font-family:SimSun;font-size:12px;">var connect = require('connect');
var session    = require('express-session');
var MongoStore = require('connect-mongo')(session);
</span>
<span style="font-family:SimSun;font-size:12px;">var flash =require("connect-flash");</span>
<pre name="code" class="html"><span style="font-family:SimSun;font-size:12px;">app.use(flash());</span>
<span style="font-family:SimSun;font-size:12px;">app.use(session({
  resave:false,
  saveUninitialized: true,
  secret:settings.cookieSecret,
  key:settings.db,
  cookie: {
    maxAge: 1000 * 60 * 24  //过期时间设置(单位毫秒)
  },
  store: new MongoStore({
    host: settings.host,
    port: settings.port,
    url: 'mongodb://localhost/blog',
    db:settings.db
  })
}));</span><pre name="code" class="html"><span style="font-family:SimSun;font-size:12px;">app.use(function(req,res,next){
  res.locals.user=req.session.user;
  var err = req.flash('error');
  var success = req.flash('success');
  res.locals.error = err.length ? err : null;
  res.locals.success = success.length ? success : null;
  next();
});</span>
4.settings.js 写法:
 
<span style="font-family:SimSun;font-size:12px;"></span><pre name="code" class="javascript">module.exports = {
    cookieSecret: 'microblogbyvoid',
    db: 'blog',
    host: 'localhost',
    port:'27017'
};


 
备注: 
<span style="font-family:SimSun;font-size:12px;"> resave:false,
  saveUninitialized: true, 如果这个不写 会出现提示 </span>
<span style="font-family:SimSun;font-size:12px;">express-session deprecated undefined resave option; provide resave option at app.js:30:9
 express-session deprecated undefined saveUninitialized option; provide saveUninitialized option at app.js:30:9</span>
resave : 是指每次请求都重新设置session cookie,假设你的cookie是10分钟过期,每次请求都会再设置10分钟saveUninitialized: 是指无论有没有session cookie,每次请求都设置个session cookie。
 
	这是本人总结的一些错,不喜勿喷,如果以上本人写错了,请留言指出。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值