Комментарии 8
В 21 веке пользуются webpack + type script, к чему это легаси?
А сам webpack как-то по-другому работает в node.js ?
вот развёрнутый список (окей, это не только вебпак):
import синтаксис вместо require(), export синтаксис вместо module.exports
типы модулей: amd, umd, commonjs, nextjs и т.д.
loaders, импорт-чего-угодно, а не только js (картинки, статические файлы, и т.п.)
type script вместо js, заголовочные файлы, source maps
lock файлы разных видов, повторябельные сборки
менеджмент транзитивных зависимостей
lerna для управления мульти-пакетными репозиториями
yarn вместо npm, yarn workspaces
Я бы ещё в этот список добавил что;-нибудь типа verdaccio.
Если вы на сервере используете nodejs+webpack+TypeScript задумайтесь: "почему вы просто не используете хорошо типизированный язык на бэке вместо этого франкенштейна? Получаете в нагрузку кучу проблем:
- проблемы с отладкой. Это больше всего раздражает, только в nodejs оптимизировали и довели отладчик до ума как все уже на TS…
- переменные под отладчиком часто видны с неожиданными именами
- сложность настройки отладки. Я знаю как ее настроить, но часто слышу от разработчиков, которые пишут на TS что дебажат они локально ЛОГАМИ! в 21 веке!
- дополнительное время на компиляцию (встречал проект который 20сек на каждый чих перекомпилируется)
- из пункта выше вытекает еще одна проблема: нужно привязывать ноутбук к столу, иначе взлетает...
- переусложненная система сборки, которую половина разработчиков стабильно не понимает
В целом NodeJS вполне сносный язык, если вас устраивает его вседозволенность и отсутсвие нормальной системы типов.
На фронте могу понять спользование TS — там нет выбора, или JS или транспайлеры… а на бэке, ИМХО, это странный костыль.
TS — надстройка над JS. С транспилятором, в теории, можно писать на любом языке (TS, Dart, Java, Python, ...) и выдумывать любую модульность, но… если всё сводится к имеющимся возможностям JS. Потому что браузеры, в массе своей, понимают только JS (ну и wasm для энтузиастов).
А если мы говорим за vanilla JS, то на сегодня это ES2020, ES-модули и import.
Управление зависимостями в Node.js