除了一个很好的方法来要求目录中的所有文件(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的目录,该目录向这些文件公开一些封装的接口; 对于以前的模块来说,这样做的方式会有所不同.但是假设您想要在包含文件夹时包含文件夹的内容(注意,这不是最佳做法,并且比您想象的要少.然后,您可以使用index.js同步加载目录中的所有文件(异步设置导出通常会要求可怕的错误)并将它们附加到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通常处理应用程序的启动,路由和应用程序的其他功能,并且需要其他模块来添加功能.如果您正在运行一个网站或Web应用程序,它也将成为一个基本的HTTP Web服务器,取代像Apache这样更传统的角色.