什么是在node.js项目中通常使用的index.js

除了一个很好的方式来要求一个目录中的所有文件( node.js需要文件夹中的所有文件? ),主要使用的index.js是什么? 它有一个“最佳实践”的工具吗?

当你将一个文件夹传递给Node的require()时,它将检查一个端点的package.json。 如果没有定义,它会检查index.js,最后检查index.node(一个c ++扩展格式)。 所以index.js很可能是需要模块的入口点。

请参阅官方文档: http : //nodejs.org/api/modules.html#modules_folders_as_modules 。

此外,你问如何要求一个目录中的所有文件。 通常,您需要一个带有index.js的目录,这些目录公开了这些文件的一些封装接口; 要做到这一点的方式将是不同的模块。 但是,假设你想包含一个文件夹的内容,当你包含文件夹(注意,这不是一个最佳的做法,并且出现次数比你想象的要less)。 然后,你可以使用一个index.js同步加载目录中的所有文件(asynchronous设置导出通常要求可怕的错误)并将它们附加到module.exports中,如下所示:

 var path = require('path'), dir = require('fs').readdirSync(__dirname + path.sep); dir.forEach(function(filename){ if(path.extname(filename) === '.js' && filename !== 'index.js'){ var exportAsName = path.basename(filename); module.exports[exportAsName] = require( path.join( __dirname, filename) ); } }); 

我几乎没有看到人们想要使用这种模式 – 大多数情况下,你希望你的index.js像这样

 var part1 = require('./something-in-the-directory'), part2 = require('./something-else'); .... module.exports = myCoolInterfaceThatUsesPart1AndPart2UnderTheHood; 

通常在其他语言中,Web服务器在访问诸如/优先级的目录时会查找某些文件以加载第一个文件,传统上这是:index或default。 在PHP中,它将是index.php或只是纯HTML,它将是index.html

在Node.js中,Node本身就是Web服务器,所以你不需要命名任何index.js,但是人们更容易理解哪个文件首先运行。

index.js通常处理你的应用程序启动,路由和你的应用程序的其他function,并要求其他模块添加function。 如果你正在运行一个网站或网页应用程序,它也将成为一个基本的HTTP Web服务器,替代了像Apache这样更传统的东西。