Tramvai — фреймворк для создания универсальных
Tramvai — фреймворк для создания
Tramvai — фреймворк для создания универсальных
Для чего нужен
Tramvai достаточно гибкий и функциональный для поддержки любых сценариев использования. Например, в Т‑Банке часть приложений создаются динамически через конструктор страниц и собраны из отдельных микрофронтендов, а приложение выступает в роли легковесной обертки. Другие приложения содержат большое количество
Долгое время Tramvai был внутренней разработкой компании, но с 2021 года исходный код публикуется на Github.
Фреймворк решает архитектурные и функциональные вопросы для разработчиков приложений, среди них:
Концепции
Серверный рендеринг. Рендеринг
Серверный рендеринг открывает дверь для оптимизаций:
Внедрение зависимостей. Ключевая особенность фреймворка — использование принципа внедрения зависимостей. Dependency Injection (DI) удивительно хорошо подходит для создания
DI — неотъемлемая часть многих фреймворков на других языках программирования. Angular и Nest.js — самые яркие примеры таких фреймворков в
DI позволяет создавать и поставлять независимые модули, каждый из которых отвечает за конкретную функциональность, а также изменять любые зависимости в этих модулях на уровне приложения. В итоге каждое
Благодаря Tramvai разработчики приложений могут создавать свои модули, выделяя тесно связанную функциональность, и по необходимости легко выносить их в отдельные переиспользуемые пакеты.
Модули могут подключать любые другие модули, выстраиваясь в общее дерево зависимостей.
Жизненный цикл приложения
Еще одна важная составляющая любого фреймворка — управление жизненным циклом приложения. Для
Tramvai решает проблему изящно и эффективно, используя собственную реализацию CommandLineRunner. Идея заключается в том, что для приложения и на сервере, и на клиенте существуют заранее заданные последовательные этапы, вместе они составляют линию, и на каждый из них можно добавить любое количество действий.
Действия на каждом этапе будут выполняться параллельно, таким образом мы легко можем сгруппировать на одном этапе множество запросов к API и выполнять линию на каждый запрос максимально быстро.
Основные возможности
React. Tramvai — это фреймворк для создания
Фреймворк предоставляет гибкий механизм для построения макета страниц, хуки для работы с DI, экшенами, роутингом и глобальным стейтом, а также поддерживает hot reloading компонентов без потери локального состояния с помощью
Full stack. Tramvai — это
Микрофронтенды. Одна из недавних возможностей Tramvai — тесно интегрированное с приложением решение для микрофронтендов, с поддержкой SSR, DI и Module Federation — Child Apps.
Child Apps позволяют строить страницы приложения из независимых блоков, с собственным релизным циклом и отдельной командой разработчиков.
Благодаря поддержке DI и переиспользованию CommandLineRunner, разработка Child Apps практически не отличается от разработки
Routing. Tramvai использует собственную библиотеку для роутинга, которая позволяет гибко задавать роуты вручную, получать роуты динамически и генерировать их на этапе инициализации приложения на основе компонентов из файловой системы.
State management. Для управления состоянием используется собственное решение с API, похожим на Redux в связке с
Для любых
Тестирование. Для
Надежность. Для обеспечения качественной и бесперебойной работы
Инструментарий. Для сборки приложений создана консольная утилита @
В сборке участвует Webpack и Babel, еще мы ведем активную работу для поддержки сборщиков и транспайлеров нового поколения — swc.
Для качественной
Документация и примеры
Документация проекта расположена на сайте tramvai.dev. Основные разделы документации из статьи:
Мы следим за качеством и актуальностью документации, улучшать ее помогает большое сообщество разработчиков
Для знакомства с фреймворком мы рекомендуем пройти туториал по созданию приложения Pokedex.
Узнать больше про внутреннее устройство и основные концепции можно в разделе Concepts.
Самый простой способ запустить
Более комплексный пример —
Посмотреть на результат работы
Полезные материалы:
Заключение
Разработка собственного фреймворка — ежедневные челленджи и постоянное изучение нового, активная работа с пользователями и регулярный сбор обратной связи.
Работа в
Наши цели — максимальный комфорт в developer experience, эффективно и быстро работающие