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

时间:2019-07-15 12:30:17

标签: 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 = 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);
});

3 个答案:

答案 0 :(得分:0)

将所有路由文件放入具有多个文件的文件夹中,例如User_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');
});

答案 1 :(得分:0)

我认为this是您所需要的。

假设有一个名为'0+6+6+6+0+0+0'的文件:

routers/login.js

然后var express = require('express'); var router = express.Router(); router.get('/login', function(req, res) { // do something });

app.js

答案 2 :(得分:0)

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

在“模型”文件夹中:  user.js

const mongoose = require("mongoose"); // In case if you want to use MongoDB
const userSchema = new mongoose.Schema({
  name: { type: String, required:true },
  email: { type: String, required: true },
  password: { type: String, required: true },

});
exports.User = User;

在路线文件夹中: users.js

const { User } = require("../models/user");
const router = express.Router();

//define your routes here
router.get('/', async(req,res)=>{
  const users = await User.find();
res.send(users)
});
module.exports = router;

最后在您的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

如果要使其更干净,可以将所有路由路径包装到另一个文件夹。让我们称之为“启动”。 这样您就可以做到这一点。

在您的启动文件夹中:

routes.js

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

module.exports = function(app) {
app.use("/api/users", users);
//add all routes here
}

然后在您的server.js中

require("./startup/routes")(app); //all routes will be imported