Javascript 如何以正确的方式拆分server.js?

Javascript 如何以正确的方式拆分server.js?,javascript,node.js,Javascript,Node.js,我正在编写自己的应用程序(包括后台和前端)。我想问你们我是不是用正确的方式做的。 我想将server.js拆分为几个文件(在PHP中,我会使用include()),但我不确定这是否正确 下面是一些代码示例: const app = require('express')(), fs = require('fs'), http = require('http').Server(app), io = require('socket.io')(https), path =

我正在编写自己的应用程序(包括后台和前端)。我想问你们我是不是用正确的方式做的。 我想将server.js拆分为几个文件(在PHP中,我会使用include()),但我不确定这是否正确

下面是一些代码示例:

const app = require('express')(),
    fs = require('fs'),
    http = require('http').Server(app),
    io = require('socket.io')(https),
    path = require('path'),
    login_user = require('./routes/login_user'),
    add_user = require('./routes/add_user'),
    logout = require('./routes/logout');


app.post('/login_user', (req, res, next) => {
    login_user.go(req, res, next);
});

app.post('/add_user', (req, res) => {
    add_user.go(req, res);
});

app.get('/logout', (req, res) => {
    logout.go(req, res);
});
请注意,这并不是全部代码,我想重点讨论将“路由”或“路径”拆分为几个文件。例如,整个API登录系统位于/routes/login_user.js文件(已导出)中

现在我有这么多路径,代码看起来有点奇怪

app.post('/check_balance', (req, res) => {
    check_balance.go(req, res);
});

app.post('/add_incoming', (req, res) => {
    add_incoming.go(req, res);
});

app.post('/add_outgoing', (req, res) => {
    add_outgoing.go(req, res);
});

app.post('/add_category', (req, res) => {
    add_category.go(req, res);
});

app.post('/change_settings', (req, res) => {
    change_settings.go(req, res);
});

app.post('/login_user', (req, res, next) => {
    login_user.go(req, res, next);
});

app.post('/add_user', (req, res) => {
    add_user.go(req, res);
});

app.post('/verify_user', (req, res) => {
    verify_user.go(req, res);
});

app.get('/logout', (req, res) => {
    logout.go(req, res);
});

app.get('/check_settings', (req, res) => {
    check_settings.go(req, res);
});

app.get('/check_categories', (req, res) => {
    check_categories.go(req, res);
});

app.post('/remove_categories', (req, res) => {
    remove_categories.go(req, res);
});

app.get('/check_incomings', (req, res) => {
    check_incomings.go(req, res);
});

app.get('/check_outgoings', (req, res) => {
    check_outgoings.go(req, res);
});

app.get('/check_both', (req, res) => {
    check_both.go(req, res);
});

app.get('/check_outgoings_chart', (req, res) => {
    check_outgoings_chart.go(req, res);
});

app.get('/check_incomings_chart', (req, res) => {
    check_incomings_chart.go(req, res);
});

app.post('/remove_incomings', (req, res) => {
    remove_incomings.go(req, res);
});

app.post('/remove_outgoings', (req, res) => {
    remove_outgoings.go(req, res);
});

将所有路由文件放在包含多个文件的文件夹中,如
User\u routes.js
可以包含与用户相关的路由等

然后,您还需要使用
module.export.your_module
从每个文件导出这些路由,并将它们包括在服务器文件中,就像在用户路由中一样:

// Login Page 
router.get('/login', (req, res) => res.render('login'));

// Register Page 
router.get('/register',(req, res) => {  
res.render('register'); });
然后将其作为

module.exports = router;
还包括:

app.use('/users', require('./routes/users.js'));

app.use('/',(req,res,next)=>{
  console.log('I should handle it Now.');
res.render('404');
});
我想这就是你需要的

假设有一个文件名为
路由器/login.js

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

router.get('/login', function(req, res) {
  // do something  
});
...
var login = require('./routes/login');
app.use("/login", login)

然后
app.js

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

router.get('/login', function(req, res) {
  // do something  
});
...
var login = require('./routes/login');
app.use("/login", login)


使server.js尽可能简单,并将所有路由逻辑提取到单独的文件夹(可能将其命名为“routes”)。如果您还想定义您的模式,请将其放在单独的文件夹(“模型”)中。完整的解决方案可以如下所示:

在模型文件夹中: user.js

在路由文件夹中: users.js

最后是在server.js中

const app = require('express')(),
    fs = require('fs'),
    http = require('http').Server(app),
    io = require('socket.io')(https),
    path = require('path'),
    users = require('./routes/users');

app.use("/api/users", users);  //With this API Endpoint you can access it like http://{your_domain}/api/users
require("./startup/routes")(app); //all routes will be imported
如果要使其更干净,可以将所有路由路径包装到另一个文件夹。让我们称之为“启动”。 有了这个你可以这样做

在启动文件夹中:

routes.js

const users = require("../routes/users");

module.exports = function(app) {
app.use("/api/users", users);
//add all routes here
}
然后在server.js中

const app = require('express')(),
    fs = require('fs'),
    http = require('http').Server(app),
    io = require('socket.io')(https),
    path = require('path'),
    users = require('./routes/users');

app.use("/api/users", users);  //With this API Endpoint you can access it like http://{your_domain}/api/users
require("./startup/routes")(app); //all routes will be imported

使用路由文件没有什么错。你也可以动态地做。相关:@Pogrindis那么你认为我的代码没有问题?