В моем express
приложении NodeJS app.js
есть несколько общих маршрутов. Затем в wf.js
файле я хотел бы определить еще несколько маршрутов.
Как я могу app.js
узнать другие обработчики маршрута, определенные в wf.js
файле?
Простое требование , похоже, не работает.
Ответы:
Например , если вы хотите поместить маршруты в отдельный файл
routes.js
, вы можете создатьroutes.js
файл следующим образом:И тогда вы можете потребовать,
app.js
чтобыapp
объект проходил таким образом:Посмотрите также на эти примеры
источник
Несмотря на то, что это старый вопрос, я наткнулся здесь на поиски решения аналогичной проблемы. Попробовав некоторые решения здесь, я в конечном итоге пошел в другом направлении и подумал, что добавлю свое решение для всех, кто окажется здесь.
В Express 4.x вы можете получить экземпляр объекта маршрутизатора и импортировать другой файл, который содержит больше маршрутов. Вы даже можете сделать это рекурсивно, чтобы ваши маршруты импортировали другие маршруты, позволяя вам создавать простые для поддержки URL-пути. Например, если у меня уже есть отдельный файл маршрута для моей конечной точки «/ tests», и я хочу добавить новый набор маршрутов для «/ tests / automatic», я могу разбить эти «/ автоматизированные» маршруты на другой файл для сохранить мой файл / test небольшим и простым в управлении. Это также позволяет логически группировать маршруты по URL-пути, что может быть очень удобно.
Содержание ./app.js:
Содержание ./routes/tests.js
Содержание ./routes/testRoutes/automated.js:
источник
Основываясь на примере @ShadowCloud, я смог динамически включить все маршруты в подкаталог.
маршруты / index.js
Затем поместите файлы маршрутов в каталог маршрутов следующим образом:
маршруты / test1.js
Повторяя , что столько раз , сколько мне нужно , а затем , наконец , в app.js размещения
источник
Более того, опираясь на предыдущий ответ, эта версия route / index.js будет игнорировать любые файлы, не заканчивающиеся на .js (и сам по себе)
источник
.DS_Store
файлы, и это все испортило.Полная рекурсивная маршрутизация всех
.js
файлов внутри/routes
папки, вставьте этоapp.js
.в
/routes
вас ставитьwhatevername.js
и инициализировать свои маршруты , как это:источник
Я пытаюсь обновить этот ответ с помощью «экспресс»: «^ 4.16.3». Этот ответ похож на ShortRound1911.
server.js
/src/routes/index.js
/src/routes/siswa_route.js
Я надеюсь, что это может кому-то помочь. Удачного кодирования!
источник
Если вы используете Express-4.x с TypeScript и ES6, это будет лучший шаблон для использования:
src/api/login.ts
src/app.ts
Гораздо чище, чем использование
var
иmodule.exports
.источник
Один твик ко всем этим ответам:
Просто используйте регулярное выражение для фильтрации путем тестирования каждого файла в массиве. Это не рекурсивно, но оно отфильтровывает папки, которые не заканчиваются на .js
источник
Я знаю, что это старый вопрос, но я пытался придумать что-то подобное для себя, и это то место, в котором я оказался, поэтому я хотел найти решение аналогичной проблемы на случай, если у кого-то еще возникнут те же проблемы, что и у меня ». Я имею. Есть замечательный модуль узла, называемый consign, который делает много вещей из файловой системы, которые мы здесь видим (т. Е. Никаких вещей readdirSync). Например:
У меня есть спокойное API-приложение, которое я пытаюсь создать, и я хочу поместить все запросы, которые идут в '/ api / *', для аутентификации, и я хочу сохранить все свои маршруты, которые идут в api, в их собственный каталог (давайте просто назовем это «API»). В основной части приложения:
Внутри каталога маршрутов у меня есть каталог с именем "api" и файл с именем api.js. В api.js у меня просто есть:
Все заработало как положено. Надеюсь, это кому-нибудь поможет.
источник
Если вы хотите, чтобы отдельный файл .js лучше организовывал ваши маршруты, просто создайте в
app.js
файле переменную, указывающую на его расположение в файловой системе:затем,
где
.foo
некоторая функция объявлена в вашемwf.js
файле. напримеристочник
wf.foo
и т. Д., Поскольку они выходят за рамки, как и в других представленных решениях? Я имею в виду случай, когда обычно вы получаете доступ к общим переменным / функциям в wf.foo, если они не отделены от app.js.Я написал небольшой плагин для этого! надоело писать один и тот же код снова и снова.
https://www.npmjs.com/package/js-file-req
Надеюсь, поможет.
источник
Это, возможно, самый крутой вопрос / ответ (ы) о переполнении стека за всю историю. Я люблю решения Сэма / Брэда выше. Думал, что я буду взаимодействовать с асинхронной версией, которую я реализовал:
Моя структура каталогов немного отличается. Обычно я определяю маршруты в app.js (в корневом каталоге проекта) с помощью
require
-ing'./routes'
. Следовательно, я пропускаю проверку,index.js
потому что хочу включить и эту.РЕДАКТИРОВАТЬ: Вы также можете поместить это в функцию и вызывать ее рекурсивно (я отредактировал пример, чтобы показать это), если вы хотите вложить ваши маршруты в папки произвольной глубины.
источник
Вы можете поместить все функции маршрута в другие файлы (модули) и связать их с файлом основного сервера. в главном экспресс-файле добавьте функцию, которая свяжет модуль с сервером:
и вызовите эту функцию для каждой модели маршрута:
в файлах модуля (например, файл login.js) определите функции как обычно:
и экспортируйте его с методом запроса в качестве ключа, а значение представляет собой массив объектов, каждый из которых имеет путь и функциональные клавиши.
источник