Как стать автором
Обновить

Комментарии 7

Спасибо, исправляю... Походу у меня в голове наложилось pull на pool. А дальше всё просто: пушить - толкать, пулать - тянуть. Кстати, почему polling - непонятно, ведь poll - это "голосовать" :(

Слово poll достаточно многозначное. Если верить словарной статье в Multitran, среди значений глагола (to) poll есть и такие:

Если что, telegraf и в es модули умеет, и в typescript))

GrammY тоже.

Я начал плотно погружаться в NodeJS в 2019-м году и сразу с import'ов. До этого я использовал JS только на фронте и там был RequireJS и require. Мне кажется, что документацию с import'ами пишут разработчики, которые более ориентируются на современные тенденции развития языка, чем те, кто использует в документации require.

О, годнота на хабре. Только Tequila Framework кажется лютым оверинжинирингом для такой задачи. Ну и Typescript как-то уже везде.

Спасибо :)

Ну, не такой уж и лютый. Во-первых, это мой собственный код - я его знаю вдоль и поперёк. Гордиться там особо нечем - я его писал 5 лет назад, когда только начинал в nodejs по-взрослому, но он работает. Во-вторых, grammY не имеет собственной обвязки для node'овских http-серверов, её приходится делать, если хочешь запускаться и в режиме webhook (а не только в long polling). То же самое относится и к запуску в режиме командной строки с параметрами - нужен какой-то парсер аргументов (commander, в моём случае). И к конфигурации - нужно считывать локальную конфигурацию с токеном подлкючения к Telegram API.

Но в целом согласен - легкий оверинжениринг присутствует. Можно откинуть commander, упростить локальную конфигурацию (считывать порт, домен, пути к сертификату и ключам, токен из настроек окружения или того же файла ./cfg/local.json), самостоятельно обернуть http & https модули для поднятия веб-сервера (http - за прокси и https - как standalone). Суть модульного монолита - в переиспользовании модулей "монолита" в других "монолитах". @teqfw/di & @teqfw/core как раз и занимаются связыванием/развязыванием кода по модулям. Например, у меня есть ещё модуль @teqfw/db - занимается обработкой соединений с реляционными БД (обёртка на knexjs). В некоторых ботах он может использоваться, в некоторых нет. Модули подключения к различным API третьих сторон тоже могут использоваться спорадически.

В целом, количество оверинжинирига зависит от того, как дальше будет применяться общий пакет (@flancer32/teq-telegram-bot). Если для ботов, где все команды имплементируются в бот-приложениях - то да, можно сделать и попроще. Если же для ботов, которые будут шарить модули (npm-пакеты) между собой - то вот уже и не оверинжениринг вовсе :)

По поводу TypeScript - у меня это религиозное (написано 3 года назад, но пока что отношение не изменилось). Я пару лет писал на GWT (Java-to-JS) и считаю, что излишне заявлять о родственности (TS как суперсет от JS), раз уж всё равно нужна транспиляция. Так-то и C# можно в JS транспилировать, и Python, и brainfuck. Любая "накладка", "обёртка" на JS (тот же TS) добавляет что-то своё, но в то же самое время что-то и отнимает (экранирует). А по итогу всё равно всё сводит к JS после транспиляции. Вот и получается, что я усекаю свои возможности по использованию JS, применяя транспилируемые языки. Код после транспиляции не похож на оригинальный даже для суперсета - TypeScript'а. Я использую связывание кода через JSDoc'и. Мне этого достаточно. Зато у меня в работе тот же код, что и в разработке - очень помогает при отладке.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории