节点js中的模块化编程

在我们的节点js应用程序中,所有api调用都在server.js中。 它是一个工作的应用程序,但我不满意每个API写在一个文件,即server.js。 许多与节点js应用程序有关的例子,指向在一个名为app.js或server.js的文件中编写服务器端调用。 为了实现代码模块化,我计划将不同的文件(如employee.js(员工相关数据事务),library.js(库相关数据事务)等)分离到各个模块。 不确定这是否是正确的方法,因为node.js服务器需要在应用程序调用时启动。 所以,如果api被分配到不同的文件,那么就需要检查一下如何启动节点js服务器。

另外,我们已经将node-webkit与应用程序集成在一起。

在这方面需要build议。

node.js中最重要的东西之一就是它的模块系统(你可以在https://nodejs.org/api/modules.html中的https://nodejs.org/api/modules.html中find它 ),它可以让你喜欢每个粒度的选项,从一千行文件到仅导出一个常量的文件。

所以只需将文件中的代码分开, module.exports = thatthingyouwanttoexport ,然后require('./it')回到app.js 。 如果您是在顶层进行,而不是在app.js中的任何callback中,那么在您的应用程序开始时就可以完成。

很less捕获:

  • 需要的模块被caching,所以需要两次不会执行你的文件两次,它可以是有用的(例如单身),但它仍然是值得注意的事情;
  • 你只导出你正在导出的东西,所以没有全局

一个有用的模式是导出函数,该函数接受参数并在调用时进行初始化,如下所示:

 //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); 

希望这可以帮助。