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

时间:2015-11-26 21:06:08

标签: 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!'})
})

我会提供很多服务(例如test),而且我不想将它们全部放在同一个文件中。

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

如何分开代码?

2 个答案:

答案 0 :(得分:7)

您可以在不同的文件中定义您的路线,例如 test-routes.js

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

现在在您的主文件中说 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);

答案 1 :(得分:4)

您的test.js应该类似于:

var express = require('express');
var router = express.Router();

router.get('/test', function (req, res) {
  res.json(200, {'test': 'it works!'});
});

module.exports = router;

app.js(假设其他路由定义与test.js类似):

var test = require("./routes/test.js");
var other = require("./routes/other.js");
...
//all your code for creating app 
...
app.use('/test', test);
app.use('/other', other);