Node.js框架之Express

建議閱讀:Express - 基于 Node.js 平臺的 web 應(yīng)用開發(fā)框架


1.部署

1.1 Express

在工作目錄下打開命令行,并執(zhí)行以下命令:

express demo_ajax

注意

  • 1.命令中的demo_ajax自行定義
  • 2.如果沒有安裝Express,請先安裝Express到全局:
npm install express-generator -g
生成Express

進(jìn)入demo_ajax并安裝依賴

cd demo_ajax
npm install

cd demo_ajax && npm install

安裝完畢后,啟動服務(wù)

node bin/www

如果要關(guān)閉服務(wù),則按 CTRL+C


1.2.Supervisor

為了提高開發(fā)效率,建議安裝supervisor到全局。

npm -g install supervisor

安裝后,執(zhí)行:

supervisor bin/www

supervisor監(jiān)控服務(wù)

優(yōu)勢
如果直接用 node bin/www 啟動服務(wù),開發(fā)過程中在服務(wù)器端做了任何修改,都需要重啟服務(wù);如果有一個函數(shù)阻塞或宕機(jī),整個服務(wù)都會掛掉。

而如果使用了supervisor,你在服務(wù)器端只要修改了文件或服務(wù)掛掉,supervisor會為你自動重啟服務(wù),省去了很多時間。此外,supervisor自帶的一些調(diào)試信息和方式也給開發(fā)者很多幫助。


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 路由

看到路由的設(shè)置:

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()實例是一個完整的中間件和路由系統(tǒng),因此常稱其為一個 “mini-app”。

推薦看看這份資料,最后的例子說得很詳細(xì):Express 路由


持續(xù)更新中...


原創(chuàng)文章,未經(jīng)許可,請勿轉(zhuǎn)載
作者:Mike的讀書季
日期:2016.09.19
QQ:1139904786
Blog:http://blog.csdn.net/kkdestiny

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容