Javascript 如何以正确的方式拆分server.js?
我正在编写自己的应用程序(包括后台和前端)。我想问你们我是不是用正确的方式做的。 我想将server.js拆分为几个文件(在PHP中,我会使用include()),但我不确定这是否正确 下面是一些代码示例: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 =
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那么你认为我的代码没有问题?