Ответ 1
Когда вы передаете папку в Node require(), она проверит наличие package.json для конечной точки. Если это не определено, он проверяет index.js и, наконец, index.node(формат расширения С++). Поэтому index.js, скорее всего, является точкой входа для запроса модуля.
Смотрите официальные документы здесь: http://nodejs.org/api/modules.html#modules_folders_as_modules.
Также вы спрашиваете, как требовать все файлы в каталоге. Обычно вам нужен каталог с index.js, который предоставляет некоторые инкапсулированные интерфейсы для этих файлов; способ сделать это будет другим для всех модулей. Но предположим, что вы хотите включить содержимое папки, когда вы включаете папку (обратите внимание, что это не лучшая практика и появляется реже, чем вы думаете). Затем вы можете использовать index.js, который загружает все файлы в каталоге синхронно (установка экспорта асинхронно обычно запрашивает ужасные ошибки) и присоединяет их к модулю. Экспорт выглядит следующим образом:
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;