Express4中文文档
执行以下命令创建 Express 4 应用程序:
$ express app4
如果查看 app4/app.js
文件的内容,您会注意到应用程序所需的所有中间件功能(express.static
除外)都作为独立模块加载,并且 router
中间件不再显式加载到应用程序中。
您还会注意到 app.js
文件现在是一个 Node.js 模块,与旧生成器生成的独立应用程序不同。
安装依赖项后,使用以下命令启动应用程序:
$ npm start
如果你查看 package.json
文件中的 npm start 脚本,你会注意到启动应用程序的实际命令是 node ./bin/www
,以前在 Express 3 中是 node app.js
。
因为 Express 4 生成器生成的 app.js
文件现在是一个 Node.js 模块,所以它不能再作为应用程序独立启动(除非您修改代码)。该模块必须加载到 Node.js 文件中并通过 Node.js 文件启动。在这种情况下,Node.js 文件是 ./bin/www
。
bin
目录和无扩展名的 www
文件都不是创建 Express 应用程序或启动应用程序所必需的。它们只是生成器提出的建议,因此请随意修改它们以满足您的需求。
要摆脱 www
目录并保留 "Express 3 way",请删除 app.js
文件末尾的 module.exports = app;
行,然后将以下代码粘贴到其位置:
app.set('port', process.env.PORT || 3000)
var server = app.listen(app.get('port'), () => {
debug('Express server listening on port ' + server.address().port)
})
确保使用以下代码在 app.js
文件的顶部加载 debug
模块:
var debug = require('debug')('app4')
接下来,将 package.json
文件中的 "start": "node ./bin/www"
更改为 "start": "node app.js"
。
您现在已将 ./bin/www
的功能移回 app.js
。不建议进行此更改,但该练习可帮助您了解 ./bin/www
文件的工作原理以及 app.js
文件不再自行启动的原因。