Это первая часть серии постов, и я хочу поговорить об общих концепциях Simba.js, примерах использования, возможностях, предостережениях, рекомендациях и так далее.

Другая библиотека/фреймворк JS?

Короткий ответ, да. Длинный ответ, ну…

Если вы чем-то похожи на меня, вас может раздражать каждый раз, когда вы хотите запустить новый JS/TS API. Большую часть времени вам приходилось настраивать одни и те же вещи снова и снова, создавая tsconfig.json, .eslintrc, LICENSE, jest.config.js/ts, Dockerfile и многое другое в зависимости от того, насколько сложным будет ваш проект.

Еще в 2021 году, когда я только начал программировать (у меня был 1 год опыта или около того), я решил, что не хочу делать это снова, поэтому я создал инструмент cli, который поможет мне создать все файлы конфигурации и избежать всего стресса, связанного с созданием их вручную снова и снова. Этот инструмент был очень полезен, в те дни мне не приходилось ничего создавать вручную, но мне этого было мало, почему? Потому что, когда вы создаете API (по крайней мере, RESTFul API), большая часть того, что вы делаете, обычно одно и то же.

Вы должны настроить свой сервер, затем базу данных, затем добавить что-то среднее для обработки вашей бизнес-логики — назовем это «сервисами» — и, наконец, добавить несколько маршрутов — «контроллеров» — для предоставления вашей бизнес-логики через некоторые конечные точки. Как только вы дойдете до этого момента, вам, вероятно, потребуется добавить какую-то проверку между полученным запросом и логикой, имеющейся в ваших контроллерах, поэтому вы можете в конечном итоге добавить некоторые схемы для проверки правильности запроса, отправленного каким-либо пользователем, и скоро.

Как видите, создание JS/TS RESTFul API обычно представляет собой очень повторяющийся процесс. Поэтому я начал работать над созданием чего-то, чтобы избежать этого процесса.

Я черпал вдохновение во многих местах, в то время мы создавали SPA с CRA, и это было довольно весело, CRA давал вам большинство инструментов, необходимых для создания собственного приложения, но это было для интерфейса, а как насчет бэкенда?
Я помню, у нас не было чего-то вроде CRA, но у нас были очень популярные полные фреймворки, такие как NestJS или SailsJS, а с другой стороны, у нас были очень неопределенные (или нет) популярные фреймворки. такие как Express, koa или Fastify, которые не давали вам хотя бы скелет или базовую конфигурацию для начала, как раньше предоставлял CRA.
Насколько я помню, средней точки не было. , вы должны полностью использовать Nest или использовать обычный Express или Fastify.

Так мне пришла в голову идея Simba.js (у меня еще не было названия). Мне нужен был инструмент, который дал бы мне отправную точку, поэтому мне приходилось писать некоторые запросы, контроллеры или службы вручную, но мне просто нужно было следовать скелету, чтобы заставить его работать. Мне нужно было что-то, что не было бы похоже на волшебство (извините, Nest), где вам просто нужно что-то импортировать и все, но также я не хотел изобретать велосипед.

Я был готов, я создал инструмент cli, который позволил мне с помощью нескольких нажатий клавиш создать небольшой шаблон со всей выполненной конфигурацией, а также полностью работающий RESTFul API, но имя отсутствовало, и тогда идея пришла мне в голову. разум. Я назвал свой фреймворк/библиотеку в честь моего кота Симбы, самого ленивого существа, которого я когда-либо встречал, и я такой же, почему? Потому что я не хочу снова создавать RESTFul API с нуля.

Целью Simba.js является стандартизация того, как мы создаем RESTFul API, на самом деле это было целью, в настоящее время я также хочу стандартизировать то, как мы создавали API GraphQL. Допустим, Simba.js стремится стать стандартным способом создания TS API.

Конечно, Simba.js сильно самоуверен, я выбрал бэкенд-фреймворки, которые мне понравились: (а также очень популярные) Express и Fastify, а также инструменты, которые мне понравились, на тот момент это были Joi и Mongoose (сейчас не поддерживаются) и некоторые другие. Также я выбрал понравившийся мне eslint и покрасивше конфиг, тестовый фреймворк и так далее.

Я выбрал эти инструменты, основываясь на собственном опыте, потому что я думал, что они очень хорошо работают вместе, и их легко комбинировать для повторного использования. Я также думаю, что это хорошая точка для начала, поскольку Simba.js предоставляет вам шаблон, им довольно легко манипулировать и расширять приложение в соответствии с вашими потребностями. Кроме того, Simba.js предоставляет вам множество инструментов, позволяющих создавать собственный API, вы можете выбрать:

  1. между Express и Fastify,
  2. MongoDB или классическая реляционная БД,
  3. REST API или GraphQL,
  4. иметь действие GitHub по анализу и тестированию,
  5. какую лицензию вы хотите использовать и т. д.

И не забывайте, что вам больше не придется беспокоиться об этих раздражающих файлах конфигурации, которые все ненавидят.

Звучит хорошо, правда? Почему бы вам не попробовать? Вот репозиторий (если хотите, оставьте там звездочку!), а также пакет npm. Я надеюсь, что вы найдете это полезным.

Это все на данный момент. Удачного кодирования!

На простом английском

Спасибо, что являетесь частью нашего сообщества! Прежде чем уйти: