路由与请求处理
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]
})
})
})
}
路由
静态路由
中间件
调试与发布
应用调试
进程管理
状态监控