Express的 ‘应用’ 和 ‘服务’ 分离

一段解释

最新的Express生成器有一个值得保留的伟大实践—API声明与网络相关配置(端口、协议等)是分开的。这样就可以在不执行网络调用的情况下对API进行在线测试,它所带来的好处是:快速执行测试操作和获取代码覆盖率。它还允许在灵活多样的网络条件下部署相同的API。额外好处:更好的关注点分离和更清晰的代码结构。

代码示例:API声明应该在 app.js 文件里面

  1. var app = express();
  2. app.use(bodyParser.json());
  3. app.use("/api/events", events.API);
  4. app.use("/api/forms", forms);

代码示例: 服务器网络声明,应该在 /bin/www 文件里面

  1. var app = require('../app');
  2. var http = require('http');
  3. /**
  4. * Get port from environment and store in Express.
  5. */
  6. var port = normalizePort(process.env.PORT || '3000');
  7. app.set('port', port);
  8. /**
  9. * Create HTTP server.
  10. */
  11. var server = http.createServer(app);

示例代码: 使用超快的流行的测试包在线测试你的代码

  1. const app = express();
  2. app.get('/user', function(req, res) {
  3. res.status(200).json({ name: 'tobi' });
  4. });
  5. request(app)
  6. .get('/user')
  7. .expect('Content-Type', /json/)
  8. .expect('Content-Length', '15')
  9. .expect(200)
  10. .end(function(err, res) {
  11. if (err) throw err;
  12. });