首页
登录页面
注册页面
1)初始化依赖包
npm init -y
2)安装依赖
npm install --save express mongoose bootstrap jquery
3)创建public文件夹,用于存放公共样式
router文件夹,用于存放路由
views文件夹,用于存放视图文件
model文件夹,用于存放数据库文件
4)创建app.js文件,启动程序
app.js=>
let express=require('express');
let app=express();
let path=require('path')
//设置静态资源
app.use('/public',express.static(path.join(__dirname,'/public/')))
app.use('/node_modules',express.static(path.join(__dirname,'/node_modules')));
//设置views为视图入口
app.engine('views',path.join(__dirname,'/views/'))
5)安装模板引擎,,用于渲染数据
npm install --save art-template express-art-template
在app.js中引入,配置
app.js=>
app.engine('html',require('express-art-template'))//遇到html文件,就使用模板渲染
6)利用子模板和模板继承创建视图文件
自模板使用—>{{include ‘./header.html’}}
模板继承—–>{{extends ‘_layout/layout.html’}}
不相同的部分用block—–>{{block ‘content’}} 默认内容{{/block}}
7)创建路由
1)创建router.js文件
2)router.js==>
let express=require('express');
let Router=express.router();
Route.get('/',(req,res)=>{
res.render('index.html')
})
.....路由模块
module.exports=Router;
3)在app.js中引入路由,并使用
let router=require('./router.js')
app.use(router)(要在最后一步)
之后就是各个部分的操作(get用于显示页面,post请求用于处理页面程序)
1)处理表单注册
前提:button类型是submit
register.html中
$(function(){
$('#register_form').on('submit',function(e){
e.preventDefault(); (1)阻止默认行为
var fromData=$(this).serialize(); (2)表单序列化
$.ajax({ (3)ajax请求
url:'/register',
type:'POST',
data:formData,
dataType:'json',
success:function(res){
}
})
})
})
router.js中
Router.post('/register',(req,res)=>{
(1)获得用户输入的数据(post请求获取数据用body-parser)
let body=req.body;
(2)mongoose存储数据
(3)向前台返回数据
})
2)mongoose存储数据
1)安装依赖
npm install --save mongoose
user.js中
let mongoose=require('mongoose');
let Schema=mongoose.Schema;
let UserSchems=new Schema({
//用于说明属性的类型
email:{type:String,required:rtue},
nickname:{type:String,required:true},
password:{type:String,required:true},
create_time:{type:Date,default:Date.now},
})
mongoose.connect('mongodb://127.0.0.1:3000/user',{useNewUrlParse:true})
module.exports=mongoose.model('User',UserSchema);
----------
在router.js中register中
let User=require('./models/user.js')
var body=req.body;
User.findOne({
$or:[{email:body.email},{nickname:body.nickname}]
},function(err,user){
if(err){return res.status(500).json({
err_code:500,
err_message:'服务器错误'
})}
if(user){return res.status(200).json({err_code:1,err_message:'用户已存在'})}
//用session存储用户状态
req.sessiong.user=user;
return res.status(200).json({err_code:2,err_message:'注册成功'})
})
md5加密
1)安装依赖
npm install --save blueimp-md5
2)引入并使用
let md5=require('blueimp-md5');
body.password=md5(md5(body.password))
session 存储数据
1)安装依赖
npm install --save express-session
let session=require('express-session')
app.use(session{
secret:'key',
resave:false,
saveUninitialized:true
})
使用session
1)添加 req.sessiong.user=user;
2)显示数据 console.log(req.sessiong.user)
重定向对异步请求无效
解决方法:客户端重定向
window.location.href='/index'
退出处理
1)清除登录状态
req.sessiong.user=null;
2)重定向
res.redirect(‘/login’)
post请求的数据用body-parser
1)安装依赖
npm install --save body-parser
2)引入并使用
let bodyparser=require('body-parser');
app.use(bodyParser.urlencode({extended:false}));
app.use(bodyParse.json());
3)使用
let body=req.body