Javascript node-js中的模块化编程
在我们的node js应用程序中,所有api调用都在server.js中。这是一个正常工作的应用程序,但我不喜欢在一个文件(即server.js)中编写每个api。许多与NodeJS应用程序相关的示例都指向在一个名为app.js或server.js的文件中编写服务器端调用。为了实现代码模块化,我计划将employee.js(employee related data transaction)、library.js(library related data transaction)等不同文件中的api分离到各自的模块中。不确定这是否是正确的方法,因为node.js服务器需要在应用程序调用时启动。因此,如果api被分发到不同的文件,那么需要检查如何一次性启动NodeJS服务器 此外,我们还将node webkit与应用程序集成Javascript node-js中的模块化编程,javascript,node.js,node-webkit,Javascript,Node.js,Node Webkit,在我们的node js应用程序中,所有api调用都在server.js中。这是一个正常工作的应用程序,但我不喜欢在一个文件(即server.js)中编写每个api。许多与NodeJS应用程序相关的示例都指向在一个名为app.js或server.js的文件中编写服务器端调用。为了实现代码模块化,我计划将employee.js(employee related data transaction)、library.js(library related data transaction)等不同文件中的a
需要这方面的建议。node.js中最棒的东西之一是它的模块系统(您可以在文档:)中了解它,它提供了您想要的每一个粒度选项,从1000行文件到只导出一个常量的文件 所以只需将代码拆分成文件,
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);
希望这会有所帮助。您可以使用express中间件和node.js中的默认模块系统来实现这一点。保持代码模块化和分离是一种很好的做法。 一种常见的方法是为所有不同的路由/控制器(您的员工)添加单独的文件夹 像这样的 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.js
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.js
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
您甚至可以使用这里的express generator获得一个现成的样板MVC代码结构。不过,我建议根据您的需要来构建您的项目。看看您是如何实现代码的会很有帮助。是的,我实现的方法是相同的。但是,我忘了在这篇帖子里回答。谢谢分享你的想法!!!。这肯定会有助于其他人寻找相同的问题。