如何将Node.js文件拆分为多个文件

How to split Node.js files in several files

本文关键字:文件 拆分 js Node      更新时间:2023-09-26

我有这个代码:

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");并且在该文件中写入所有服务,但当我启动Node时,它会抛出app is not defined

如何分离代码?

您可以在不同的文件中定义您的路由,比如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);

您的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(假设other是类似于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);