Skip to content

Commit

Permalink
migrating to express4.x
Browse files Browse the repository at this point in the history
  • Loading branch information
nswbmw committed Nov 24, 2014
1 parent 2dfbe04 commit 7a553dd
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 60 deletions.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,12 @@ N-blog

使用 Express + MongoDB 搭建多人博客

教程见 [wiki](https://github.com/nswbmw/N-blog/wiki/_pages)
教程见 [wiki](https://github.com/nswbmw/N-blog/wiki/_pages)


### 分支说明

- master: express4.x 版,受限于排版原因尽量做了最少的改动从原来的express3.x升到express4.x
- express4.x: express4.x 版,代码进行了重构
- koa: koa 版
- master-express3.x-backup: express3.x 版,备份
61 changes: 32 additions & 29 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,56 +1,59 @@
/**
* Module dependencies.
*/
var path = require('path');

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var MongoStore = require('connect-mongo')(express);
var settings = require('./settings');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var flash = require('connect-flash');
var multer = require('multer');

var route = require('./routes/index');
var settings = require('./settings');

var fs = require('fs');
var accessLog = fs.createWriteStream('access.log', {flags: 'a'});
var errorLog = fs.createWriteStream('error.log', {flags: 'a'});

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(flash());
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
app.use(express.logger('dev'));
app.use(express.logger({stream: accessLog}));
app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' }));
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
app.use(favicon(__dirname + '/public/images/favicon.ico'));
app.use(logger('dev'));
app.use(logger({stream: accessLog}));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({
dest: './public/images',
rename: function (fieldname, filename) {
return filename;
}
}));
app.use(cookieParser());
app.use(session({
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
db: settings.db
db: settings.db,
host: settings.host,
port: settings.port
})
}));
app.use(app.router);
app.use(flash());
app.use(express.static(path.join(__dirname, 'public')));

route(app);

app.use(function (err, req, res, next) {
var meta = '[' + new Date() + '] ' + req.url + '\n';
errorLog.write(meta + err.stack + '\n');
next();
});

// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}

http.createServer(app).listen(app.get('port'), function(){
app.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

routes(app);
});
2 changes: 1 addition & 1 deletion models/db.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ var settings = require('../settings'),
Db = require('mongodb').Db,
Connection = require('mongodb').Connection,
Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT), {safe: true});
module.exports = new Db(settings.db, new Server(settings.host, settings.port), {safe: true});
27 changes: 17 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
{
"name": "blog",
"version": "0.0.1",
"name": "N-blog",
"version": "1.0.0",
"private": true,
"description": "N-blog for express4.x",
"scripts": {
"start": "node app.js"
"start": "node app"
},
"dependencies": {
"express": "^3.4.4",
"ejs": "*",
"mongodb": "*",
"connect-mongo": "*",
"connect-flash": "*",
"markdown": "*"
"express": "4.10.2",
"body-parser": "1.9.0",
"cookie-parser": "1.3.3",
"morgan": "1.3.1",
"serve-favicon": "2.1.5",
"ejs": "1.0.0",
"markdown": "0.5.0",
"mongodb": "1.4.15",
"express-session": "1.9.1",
"connect-flash": "0.1.1",
"connect-mongo": "0.4.1",
"multer": "0.1.6"
}
}
}
3 changes: 1 addition & 2 deletions public/stylesheets/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
body{width:600px;margin:2em auto;padding:0 2em;font-size:14px;font-family:"Microsoft YaHei";}
p{line-height:24px;margin:1em 0;}
header{padding:.5em 0;border-bottom:1px solid #ccc;}
/*nav{float:left;font-family:"Microsoft YaHei";font-size:1.1em;text-transform:uppercase;margin-left:-12em;width:9em;text-align:right;}*/
nav{position:fixed;left:12em;font-family:"Microsoft YaHei";font-size:1.1em;text-transform:uppercase;width:9em;text-align:right;}
nav{float:left;font-family:"Microsoft YaHei";font-size:1.1em;text-transform:uppercase;margin-left:-12em;width:9em;text-align:right;}
nav a{display:block;text-decoration:none;padding:.7em 1em;color:#000;}
nav a:hover{background-color:#f00;color:#f9f9f9;-webkit-transition:color .2s linear;}
article{font-size:16px;padding-top:.5em;}
Expand Down
23 changes: 7 additions & 16 deletions routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,18 +150,6 @@ module.exports = function(app) {

app.post('/upload', checkLogin);
app.post('/upload', function (req, res) {
for (var i in req.files) {
if (req.files[i].size == 0){
// 使用同步方式删除一个文件
fs.unlinkSync(req.files[i].path);
console.log('Successfully removed an empty file!');
} else {
var target_path = './public/images/' + req.files[i].name;
// 使用同步方式重命名一个文件
fs.renameSync(req.files[i].path, target_path);
console.log('Successfully renamed a file!');
}
}
req.flash('success', '文件上传成功!');
res.redirect('/upload');
});
Expand Down Expand Up @@ -243,6 +231,10 @@ module.exports = function(app) {
var page = req.query.p ? parseInt(req.query.p) : 1;
//检查用户是否存在
User.get(req.params.name, function (err, user) {
if (err) {
req.flash('error', err);
return res.redirect('/');
}
if (!user) {
req.flash('error', '用户不存在!');
return res.redirect('/');
Expand Down Expand Up @@ -331,7 +323,7 @@ module.exports = function(app) {
app.post('/edit/:name/:day/:title', function (req, res) {
var currentUser = req.session.user;
Post.update(currentUser.name, req.params.day, req.params.title, req.body.post, function (err) {
var url = '/u/' + req.params.name + '/' + req.params.day + '/' + req.params.title;
var url = encodeURI('/u/' + req.params.name + '/' + req.params.day + '/' + req.params.title);
if (err) {
req.flash('error', err);
return res.redirect(url);//出错!返回文章页
Expand Down Expand Up @@ -359,7 +351,7 @@ module.exports = function(app) {
Post.edit(req.params.name, req.params.day, req.params.title, function (err, post) {
if (err) {
req.flash('error', err);
return res.redirect(back);
return res.redirect('back');
}
var currentUser = req.session.user,
reprint_from = {name: post.name, day: post.time.day, title: post.title},
Expand All @@ -370,8 +362,7 @@ module.exports = function(app) {
return res.redirect('back');
}
req.flash('success', '转载成功!');
var url = '/u/' + post.name + '/' + post.time.day + '/' + post.title;
//跳转到转载后的文章页面
var url = encodeURI('/u/' + post.name + '/' + post.time.day + '/' + post.title);
res.redirect(url);
});
});
Expand Down
3 changes: 2 additions & 1 deletion settings.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module.exports = {
cookieSecret: 'myblog',
db: 'blog',
host: 'localhost'
host: 'localhost',
port: 27017
};
2 changes: 2 additions & 0 deletions views/tags.ejs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<%- include header %>
<p>
<% posts.forEach(function (tag, index) { %>
<a class="tag" href="/tags/<%= tag %>"><%= tag %></a>
<% }) %>
</p>
<%- include footer %>

0 comments on commit 7a553dd

Please sign in to comment.