Пишу про разработку вообще и в частности про: JavaScript, HTML5, CSS3, AngularJS, ReactJS, Agile.

InversifyJS – инверсия управления в JS на базе TypeScript’а

Отличная тема для поста, не правда ли? Чувствуется дуновения Явы со стороны сервера ^_^. Люблю изучать библиотеки, которые приносят новые принципы в язык. Нет, “инверсия управления” сам по себе не новый подход в ООП, не поймите меня не правильно, википедия не даст мне ввести вас в заблуждение. Однако, в JS он достаточно “свеж”. В общем не будем долго ходить вокруг да около и давайте погрузимся в код.

InversifyJS это своего рода библиотека-обертка для предоставления функционала Dependencies Injection. Все это строится на базе декораторов, которые обещают появиться в JS в ближайшем будущем, а пока доступны в TypeScript’е.

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

Давайте посмотрим как это работает. Сразу оговорюсь, что для этих примеров нужно знать TypeScript. В принципе есть возможность и без него, но мне этот путь нравится меньше, поэтому используем TypeScript.

Для начала создаем интерфейсы для наших классов:

Теперь самое время имплементировать их в нашем мини-приложении:

После того, как классы готовы можно их использовать в основном рабочем классе:

Единственное что нам осталось – это связать ядро InversifyJS с классами, которые мы будем прокидывать. Это необходимо, так как мы нигде не импортируем их прежде чем начинаем использовать.

Авторы InversifyJS рекомендуют делать это в отдельном файле с названием inversify.config.ts

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

Репозиторий с библиотекой: https://github.com/inversify/InversifyJS

Поделиться:
comments powered by Disqus