» » » Конструктор шаблонов проектов или сложности управления большими проектами

 

Конструктор шаблонов проектов или сложности управления большими проектами

Автор: admin от 18-01-2018, 21:25, посмотрело: 207

Конструктор шаблонов проектов или сложности управления большими проектами



Предыстория



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

в описании.



Модульная инфраструктура



Наиболее очевидным решением для организации такой инфраструктуры видится использование в конечном проекте формата монорепозитория. Изначально использовался инструмент lerna.js, однако он лучше подходит для управления проектами разработки библиотек — таких, как, например, jest, babel и многие другие. Основной используемой фичей было разрешение зависимостей в рамках монорепозитория, однако сейчас, с появлением yarn workspaces, переключились на использования именно их, ведь это позволяет решить проблемы организации проекта как монорепозитория наиболее эффективно.



Второй частью модульности приложения можно назвать rispa-core. Этот пакет предоставляет возможность организовывать взаимодействие плагинов друг с другом, а также декларирует спецификацию для написания плагинов.



Плагины



На текущий момент сформировался достаточно большой корпус плагинов, однако они в основном обслуживают потребности проектов на React, которые в перспективе могут быть пересмотрены для внедрения поддержки других фреймворков или систем сборки. Вот их краткий перечень:




  • rispa-config — хранилище конфигурации проекта, всегда присутствует в проекте и подключается как простая зависимость во всех плагинах;

  • rispa-server — отвечает за всю рутину, связанную с запуском сервера, конфигурированием сжатия, поддержкой CORS и некоторым дефолтным роутингом. При этом позволяет другим плагинам расширять свои возможности через подключение роутов и других middleware;

  • rispa-client — отвечает непосредственно за клиентское приложение, которое работает в браузере. Сейчас это React-специфичный клиент, поэтому в дальнейшем тут останется только часть, обеспечивающая работу всей платформы, а React-часть переедет в отдельный плагин;

  • rispa-webpack — отвечает за работу общей сборки проекта вебпаком, при этом конфиг собирается по частям из существующих плагинов;

  • rispa-eslint-config — отвечает за подключение и корректную работу линтера в проекте, является просто drop-in зависимостью;

  • rispa-generator — отвечает за работу генераторов в проекте, сами генераторы также собираются из всех установленных плагинов в проекте.



Экспериментальные плагины:




  • rispa-render-static — плагин для осуществления рендеринга существующего приложения в статический сайт, на данный момент в процессе разработки;

  • rispa-render-simple — плагин для рендеринга страниц без фреймворков, в первоначальной реализации используется pug, вероятно, конечный вариант тоже будет настраиваемым.



Как начать



Предварительно необходимо установить cli:



$ yarn global add @rispa/cli


После успешной установки нужно запустить ris new, что позволит создать новый проект, ответить на вопросы, выбрать плагины и дождаться установки всех зависимостей:



$ ris new




Теперь у нас есть свежесгенерированный и настроенный проект. Однако в нём нет ни одного роута. Нужно его добавить. Для этого воспользуемся генератором feature-plugin, который создаёт новый модуль и регистрирует его в @rispa/routes. После ответа на несколько вопросов плагин будет сгенерирован и подключён в проект, а также обновятся зависимости.



$ ris g feature-plugin




Теперь у нас есть настроенный плагин, далее нужно доставить основной компонент для страницы. Вновь воспользуемся генератором ris g container, в процессе будет предложено выбрать, в какой плагин произвести генерацию. Кстати, чтобы увидеть все генераторы, можно просто указать ris g — будет выдан список генераторов, доступных в проекте.



$ ris g container




Теперь необходимо связать роут с созданным контейнером, это делается в файле /packages/home/src/register.js:



import Home from './containers/Home/Home'
// import reducer, { action } from './redux/reducer'
// import { match } from '@rispa/redux'

const registerReducer = () => {
  // store.injectReducer('reducerName', reducer)
}

const registerWhen = () => {
  // when(match('/'), action)
}

const registerModule = context => {
  registerReducer(context)
  registerWhen(context)

  return Home
}

export default registerModule


Теперь можно запускать проект и после завершения сборки увидеть его в браузере:



$ ris server start-dev


Заключение



Сейчас Rispa позволяет решать задачи по упрощению старта проекта, а также оптимизации рабочего процесса. Дальнейшее развитие видится именно в расширении возможностей и поддержке новых фреймворков, а кроме того, в поиске других возможных применений для самой базы в виде rispa-cli + rispa-core.



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



Некоторые планы на будущее




  • Расширение списка поддерживаемых фреймворков, планируется добавить Angular, vue.js;

  • Завершение переезда ярда и плагинов на TypeScript и типизация всех интерфейсов;

  • Добавление подробной документации для плагинов;

  • Внедрение плагинной инфраструктуры на клиенте.



Полезные ссылки




  • Организация проекта на github

  • Страница проекта с основной информацией rispa.io

  • Компания, под крылом которой это всё родилось CSSSR



Источник: Хабрахабр

Категория: Админитстрирование » Системное администрирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *