我正在编写自己的应用程序(后端和前端)。我想问你们我是否做对了。 我想将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);
});
答案 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