本人近日由于公司要求开始学习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。
这是本人总结的一些错,不喜勿喷,如果以上本人写错了,请留言指出。