路由与请求处理

Express 中路由与请求处理

const fs = require("fs");
const http = require("http");
const https = require("https");
const privateKey = fs.readFileSync("sslcert/server.key", "utf8");
const certificate = fs.readFileSync("sslcert/server.crt", "utf8");

const credentials = { key: privateKey, cert: certificate };
const express = require("express");
const app = express();

app.get("/", function(req, res) {
  res.send("hello");
});

// 其他的 Express 配置

const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);

httpServer.listen(8080);
httpsServer.listen(8443);

Hello World

首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。

$ mkdir myapp
$ cd myapp

通过 npm init 命令为你的应用创建一个 package.json 文件。欲了解 package.json 是如何起作用的,请参考 Specifics of npm’s package.json handling

$ npm init

此命令将要求你输入几个参数,例如此应用的名称和版本。你可以直接按“回车”键接受默认设置即可,下面这个除外:

entry point: (index.js)

键入 app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js 文件名,只需按“回车”键即可。接下来安装 Express 并将其保存到依赖列表中:

$ npm install express --save

如果只是临时安装 Express,不想将它添加到依赖列表中,只需略去 --save 参数即可:

HelloWorld

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

上面的代码启动一个服务并监听从 3000 端口进入的所有连接请求。他将对所有 (/) URL 或路由 返回 “Hello World!” 字符串。对于其他所有路径全部返回 404 Not Found。

Hot Reload

var express = require('express')
var app = express()
var chokidar = require('chokidar')
var watcher = chokidar.watch('./app')
watcher.on('ready', function() {
  watcher.on('all', function() {
    console.log("Clearing /dist/ module cache from server")
    Object.keys(require.cache).forEach(function(id) {
      if (/[\/\\]app[\/\\]/.test(id)) delete require.cache[id]
    })
  })
})
app.use(function (req, res, next) {
  require('./app/index')(req, res, next)
})
app.listen(9000)

如果你希望在生产环境下不进行热加载,那么可以通过判断 NODE_ENV 的方式:

var production = process.env.NODE_ENV === 'production'
if(!production) {
  var chokidar = require('chokidar')
  var watcher = chokidar.watch('./dist')
  watcher.on('ready', function() {
    watcher.on('all', function() {
      console.log("Clearing /dist/ module cache from server")
      Object.keys(require.cache).forEach(function(id) {
        if (/[\/\\]dist[\/\\]/.test(id)) delete require.cache[id]
      })
    })
  })
}

路由

静态路由

中间件

调试与发布

应用调试

进程管理

状态监控

借鉴了express-status-monitor:

上一页
下一页