Как мне требовать все файлы в папке в node.js?
нужно что-то вроде:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
Как мне требовать все файлы в папке в node.js?
нужно что-то вроде:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
var routes = require('auto-load')('routes');
с новымauto-load
модулем [я помог создать его].Ответы:
Когда require указан путь к папке, он будет искать файл index.js в этой папке; если он есть, он использует его, а если его нет, он терпит неудачу.
Вероятно, было бы наиболее разумно (если у вас есть контроль над папкой) создать файл index.js, а затем назначить все «модули», а затем просто потребовать этого.
yourfile.js
index.js
Если вы не знаете имен файлов, вам следует написать какой-нибудь загрузчик.
Рабочий пример загрузчика:
источник
require
указан путь к папке, он будет искатьindex.js
в этой папке; если он есть, он использует его, а если его нет, он терпит неудачу. См. Github.com/christkv/node-mongodb-native для реального примера этого: естьindex.js
в корневом каталоге, который требует./lib/mongodb
, каталог;./lib/mongodb/index.js'
делает все остальное в этом каталоге доступным.require
является синхронной функцией, поэтому нет никаких преимуществ от обратного вызова. Я бы использовал fs.readdirSync вместо этого.package.json
в этом каталоге. Вроде так:{main: './lib/my-custom-main-file.js'}
Я рекомендую использовать glob для выполнения этой задачи.
источник
glob
? вы имеете в видуglob-savior-of-the-nodejs-race
. Лучший ответ.Основываясь на решении @ tbranyen, я создаю
index.js
файл, который загружает произвольные javascript- коды в текущую папку как частьexports
.Тогда вы можете
require
этот каталог из любого другого места.источник
/\.js(on)?$/
этого будет лучше. Также не является!== null
лишним?Другой вариант - использовать пакет require-dir, который позволит вам сделать следующее. Он также поддерживает рекурсию.
источник
require-dir
потому что он автоматически исключает вызывающий файл (индекс) и по умолчанию использует текущий каталог. Отлично.require-dir
добавленfilter
вариант.У меня есть папка / поля, полные файлов с одним классом каждый, например:
Перетащите это в fields / index.js для экспорта каждого класса:
Это делает модули более похожими на Python:
источник
Еще одна опция - require-dir-all, объединяющая функции большинства популярных пакетов.
Самый популярный
require-dir
не имеет опций для фильтрации файлов / каталогов и не имеетmap
функции (см. Ниже), но использует небольшую хитрость, чтобы найти текущий путь модуля.Второе место по популярности
require-all
имеет фильтрация и предварительная обработка регулярных выражений, но не имеет относительного пути, поэтому вам нужно использовать__dirname
(это имеет плюсы и минусы), например:Упомянутое здесь
require-index
довольно минималистично.С
map
вы можете сделать некоторые предварительной обработку, как создавать объекты и передавать значение конфигурации (предполагая модули ниже экспорт конструкторов):источник
Я знаю, что этому вопросу более 5 лет, и приведенные ответы хороши, но я хотел что-то более мощное для экспресса, поэтому я создал
express-map2
пакет для npm. Я собирался назвать это простоexpress-map
, однако у людей в Yahoo уже есть пакет с таким именем, поэтому мне пришлось переименовать мой пакет.1. основное использование:
использование контроллера:
2. расширенное использование с префиксами:
Как видите, это экономит массу времени и упрощает написание, поддержку и понимание маршрутизации вашего приложения. он поддерживает все глаголы http, которые выражают поддержку, а также специальный
.all()
метод.источник
Один модуль, который я использовал для этого точного варианта использования, является обязательным для всех .
Он рекурсивно требует все файлы в данном каталоге и его подкаталогах, если они не соответствуют
excludeDirs
свойству.Это также позволяет указать файловый фильтр и узнать, как получить ключи возвращенного хэша из имен файлов.
источник
Я использую модуль copy-to module модуля для создания единого файла, чтобы требовать все файлы в нашей системе на основе NodeJS.
Код для нашего служебного файла выглядит следующим образом:
Во всех файлах большинство функций записываются как экспорты, например так:
Итак, чтобы использовать любую функцию из файла, вы просто вызываете:
источник
Расширяя это
glob
решение. Сделайте это, если вы хотите импортировать все модули из каталога в,index.js
а затем импортировать егоindex.js
в другую часть приложения. Обратите внимание, что литералы шаблона не поддерживаются механизмом подсвечивания, используемым stackoverflow, поэтому код здесь может выглядеть странно.Полный пример
Структура каталогов
globExample / example.js
globExample / foobars / index.js
globExample / foobars / unexpected.js
globExample / foobars / barit.js
globExample / foobars / fooit.js
Изнутри проекта с
glob
установленным , запуститьnode example.js
источник
Можно использовать: https://www.npmjs.com/package/require-file-directory
источник
Требовать все файлы из
routes
папки и применять в качестве промежуточного программного обеспечения. Внешние модули не нужны.источник
Используя эту функцию, вам может потребоваться целый каталог.
источник
Если вы включили все файлы * .js в пример каталога ("app / lib / *. Js"):
В каталоге app / lib
example.js:
ПРИМЕР 2.js:
В каталоге приложения создайте index.js
index.js:
источник