最近在学nodejs,也没怎么学就是大概学了一点,并尝试着写了一个应用mvc架构的web项目,和传统的web项目比较起来确实能节省了很多,不用再用第三方的服务器,有过js或jq的经验的同学更容易上手,好了废话不多说,来给大家说说这个简单的web项目。
首先用express简历一个web项目,在命令行输入express -e bbs,前提是安装了express框架,项目目录如下:
public方的是一些静态文件如css js 等
app.js是服务器,代码如下
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var ejs=require('ejs')
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html',ejs.__express);
app.set('view engine', 'html');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
app.use('/login',routes);
app.use('/dologin',routes);
app.use('/logout',routes);
app.use('/welcome',routes);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
app.listen(8888)
module.exports = app;
route是路由控制他接受i请求和转发请求里面包含了数据库的操作
代码如下index.js
var express = require('express');
var router = express.Router();
var mongoose=require('mongoose');
var models=require('./models');
var User=models.User;
mongoose.connect('mongodb://localhost/test');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/login', function(req, res, next) {
res.render('login', { title: 'login' });
});
router.post('/dologin', function(req, res, next) {
console.log("99");
var user={name:req.body.name,password:req.body.password};
User.count(user,function (error,doc) {
if(doc==0){
res.redirect('/login')
}else{
res.redirect('/welcome?name='+req.body.name)
}
});
});
router.get('/logout', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/welcome', function(req, res, next) {
var user={
name:req.query.name
}
res.render('welcome', { title: 'home',user:user });
});
module.exports = router;
第二个
models.js
var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var UserSchema=new Schema({
name:String,
password:String
})
exports.User=mongoose.model('User',UserSchema);
第三个users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
然后是view
index.html
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<h1><a href="login">登陆</a></h1>
</body>
</html>
login.html
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<form method="post" action="dologin">
username:<input type="text" name="name" id="name"> <br>
password:<input type="password" name="password" id="password"><br>
<input type="submit" value="submit"><br><br>
<input type="reset" value="reset">
</form>
</body>
</html>
welcome.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h1>Hello<%=user.name%></h1>
<h1><a href="logout">退出</a></h1>
</body>
</html>
当然数据库中要有这些数据,别忘记建立数据库