如何在几个文件中拆分Node.js文件

Pab*_*blo 4 javascript node.js

我有这个代码:

var express = require("express");
var app     = express();
var path    = require("path");

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/views/index.html'));
  res.set('Access-Control-Allow-Origin', '*');
}).listen(3000);

console.log("Running at Port 3000");

app.get('/test', function(req, res) {
    res.json(200, {'test': 'it works!'})
})
Run Code Online (Sandbox Code Playgroud)

我会有很多服务(比如test一个),我不想把它们都放在同一个文件上.

我在Stack Overflow中读到另一个问题,我可以要求这样的其他文件:var express = require("./model/services.js");并在该文件中编写所有服务,但是app is not defined当我启动Node时它会抛出.

我该如何分开代码?

Kun*_*dia 7

您可以在不同的文件中定义路由,例如test-routes.js,如下所示:

module.exports = function (app) {
    app.get('/test', function(req, res) {
        res.json(200, {'test': 'it works!'})
    })
}
Run Code Online (Sandbox Code Playgroud)

现在在你的主文件中说server.js你可以像这样导入路径文件:

var express = require("express");
var app     = express();
var path    = require("path");

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/views/index.html'));
  res.set('Access-Control-Allow-Origin', '*');
}).listen(3000);

console.log("Running at Port 3000");

// import your routes
require('./test-routes.js')(app);
Run Code Online (Sandbox Code Playgroud)