在我们的节点js应用程序中,所有api调用都在server.js中。它是一个有效的应用程序,但我不满意每个api写在一个文件,即server.js。许多与节点js应用程序相关的示例都指向在名为app.js或server.js的文件中编写服务器端调用。为了实现代码模块化,我打算将诸如employee.js(员工相关数据事务),library.js(库相关数据事务)等不同文件中的api分离到各个模块。不确定这是否是正确的方法,因为需要在应用程序调用时启动node.js服务器。因此,如果api被分发到不同的文件,那么需要一次性检查如何启动节点js服务器。
此外,我们已将node-webkit与应用程序集成在一起。
需要这方面的建议。
node.js中最重要的事情之一就是它的模块系统(你可以在docs中看到它:https://nodejs.org/api/modules.html),它为你提供了你想要的每个粒度选项,从千行文件到只导出文件的文件一个常数。
所以只需将文件中的代码,module.exports = thatthingyouwanttoexport
和require('./it')
分解回app.js
。如果你在顶级而不是在app.js中的任何回调中进行,那么它将在你的应用程序开始时完成。
很少有人抓到:
一个有用的模式是导出函数,它接受参数并在调用时进行初始化,如下所示:
//accum.js
var start = 0
module.exports = function initaccum(step) {
return function accum() {
start += step;
return start;
}
}
//app.js
var accum = require('./accum.js')(1);
var http = require('http')
http.createServer(function(req, res) {
res.end(accum());
}).listen(8080);
希望这可以帮助。
您可以使用node.js中的express中间件和默认模块系统来实现此目的。保持代码模块化和分离是一种很好的做法。一种常见的方法是为所有不同的路由/控制器(在您的情况下为员工)添加单独的文件夹
app.js
const express = require('express')
const app = express()
const employeeController = require('./controller/Employee');
const managerController = require('./controller/Manager');
app.use('/employee', employeeController);
app.use('/manager', managerController);
app.listen(3000, () => console.log('App listening on port 3000!'))
./controller/employee/index.就是
const express = require('express')
const router = express.Router()
router.get('/list', (req, res) => {
res.send('Employee list')
});
router.get('/view', (req, res) => {
res.send('Employee view')
});
module.exports = router
./controller/manager/index.就是
const express = require('express')
const router = express.Router()
router.get('/list', (req, res) => {
res.send('Manager list')
});
router.get('/view', (req, res) => {
res.send('Manager view')
});
module.exports = router
您甚至可以通过使用快速生成器来获得现成的样板MVC代码结构https://expressjs.com/en/starter/generator.html。但是我根据您的需要推荐构建您的项目。