Node.js框架之Express

建议阅读:Express - 基于 Node.js 平台的 web 应用开发框架


1.部署

1.1 Express

在工作目录下打开命令行,并执行以下命令:

express demo_ajax

注意

  • 1.命令中的demo_ajax自行定义
  • 2.如果没有安装Express,请先安装Express到全局:
npm install express-generator -g
Node.js框架之Express_第1张图片
生成Express

进入demo_ajax并安装依赖

cd demo_ajax
npm install

cd demo_ajax && npm install

安装完毕后,启动服务

node bin/www

如果要关闭服务,则按 CTRL+C


1.2.Supervisor

为了提高开发效率,建议安装supervisor到全局。

npm -g install supervisor

安装后,执行:

supervisor bin/www

Node.js框架之Express_第2张图片
supervisor监控服务

优势
如果直接用 node bin/www 启动服务,开发过程中在服务器端做了任何修改,都需要重启服务;如果有一个函数阻塞或宕机,整个服务都会挂掉。

而如果使用了supervisor,你在服务器端只要修改了文件或服务挂掉,supervisor会为你自动重启服务,省去了很多时间。此外,supervisor自带的一些调试信息和方式也给开发者很多帮助。


2.app.js初探

到Express 4.x时代,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 routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// 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);

// 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: {}
  });
});

module.exports = app;

2.1 路由

看到路由的设置:

var routes = require('./routes/index');
……
app.use('/', routes);

这里加载了一个路由模块,它在routes.index.js文件中定义。我们再看这个文件:

var express = require('express');
var router = express.Router();
……
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
……
module.exports = router;

这里的express.Router()实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。

推荐看看这份资料,最后的例子说得很详细:Express 路由


持续更新中...


原创文章,未经许可,请勿转载
作者:Mike的读书季
日期:2016.09.19
QQ:1139904786
Blog:http://blog.csdn.net/kkdestiny

你可能感兴趣的:(Node.js框架之Express)