项目结构
#创建项目文件夹blog,并运行命令初始化
npm init -y
git init
#blog/README.md
#blog/.gitignore
#blog/App.js
#blog/public
#blog/public/img
#blog/public/js
#blog/public/css
#blog/views
#blog/views/index.html
#blog/router
#blog/modules
npm i express mongoose
npm i art-template
npm i express-art-template
npm i express-session
文件模板
var express = require('express');
var path = require('path');
var bodyParer = require('body-parser');
var session = require('express-session')
var router = require('./router/router.js');
var app = express();
app.use('/public',express.static(path.join(_dirname,'./public')));
app.use('node_modules',express.static(path.join(_dirname,'./node_modules')));
app.engine('html',require('express-art-template'));
app.set('views',path.join(__dirname,'./views/'));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
app.use(session({
secret:'keyboard cat',
resave:false,
saveUninitized:true
}));
app.use(router);
app.listne(5000,function(){
console.log('running...');
});
{{ extend './layout.html' }}
{{ block 'content' }}
<div>
<h1>index 页面</h1>
</div>
{{ /block }}
<h1>公共头部</h1>
<h1>公共底部<h1>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
{{ block 'head' }}
{{ /block }}
</head>
<body>
{{ include './header.html' }}
{{ block 'content' }}
<h1>默认内容</h1>
{{ /block }}
{{ include './fooder.html' }}
{{ block 'script' }}
{{ /block }}
</body>
</html>
路由设计
var express = require('express');
var router = express.Router();
var User = require('./modules/user');
app.get('/',function(req,res){
console.log(req.session.user);
res.send('index.html');
});
app.get('/register',function(req,res){
var body = req.body;
User.findOne({
$or:[{emial:body.email},{nickname:body.nickname}]
},function(err,data){
if(err){
return res.status(500).json({
success:false,
message:'Server error'
});
}
if(data){
return res.status(200).json({
success:true,
error_code:1,
message:'email or nickname alerady exists'
});
}
console.log('ok');
new User(body).save(function(err,user){
if(err){
return res.status(500).json({
success:false,
error_code:2,
message:'Server error'
});
}
});
res.status(200).json({
success:true,
error_code:0,
message:'ok'
});
});
});
app.get('/logout',function(req,res){
req.session.user = null;
res.edirect('/login');
});
app.get('/login',function(req,res){
var body = req.body;
req.session.user = bdoy;
res.send('index.html');
});
module.exports = router;
数据库模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
email:{
type:String,
required:true
},
nickName:{
type:String,
required:true
},
password:{
type:String,
required:true
},
created_time:{
type:Date,
default:Date.now
},
last_modified_tume:{
type:Date,
default:Date.now
},
avatar:{
type:String,
default:'/public/img/xxx.img'
},
gender:{
type:Number,
enum:[-1,0,1],
default:-1
},
status:{
type:Number,
enum:[0,1,2],
default:0
}
});
module.exports = mongoose.model('User',userSchema);