Frontend Architecture

На какие вопросы нужно ответить

перед тем, как начать фронтенд проект

Алексей Бондаренко

Занимаюсь разработкой 7 лет.

Frontend Architect и Team Lead в нескольких проектах

Руководил командами на React Js, Angular JS и Vue JS

 

Кто такой фронтенд девелопер?

PSD to HTML ?= FE

Дизайн
+

АПИ
+
Бизнес требования

=

FE проект

Дизайн

  1. Как работаем с исходником/ами дизайна?
  2. Как экспортируем ассеты?
  3. Как работаем с изменением в дизайне?

API

  1. Где смотрим документацию по АПИ?
  2. Есть ли тестовая среда?
  3. Как сделана авторизация?

Бизнес требования

  1. SEO?

  2. Supportable browsers?

  3. White Labels?

  4. Offline first?

  5. Localization?

  6. Analytic events?

  7. Security? (e.g. credit card info)

Frontend Architecture

https://github.com/micahgodbolt/front-end-architecture

Какой тип приложения?

MPA vs SPA

Какие у нас есть разработчики?

Определили стек технологий

Структура проекта

Роутинг

Как называем?

Кто резолвит?

Стилизация

Нужны ли темы?

Производительность?

Vue React React
vue scoped styles jss css modules
vue-style-loader jss-loader isomorphic style loader

Локализация

Степень локализации?

Кто будет переводить?

Технические вопросы

Где храним и как подгружаем?

Один файл или много файлов?

Как собираем строки для перевода?

 

React or Vue
i18next
webpack
i18next-po-loader
i18next-extract-gettext

Данные

Как запрашиваем?

Как храним?

Как используем?

Vue JS Vue JS React React
vuex vue-apollo redux react-apollo
adiox redux-api-middleware
normalizr normalizr
redial
react-router-redial

Формы

Как управляем состоянием?

Как валидируем?

Vue React Express JS
vue redux, redux-form express js
vee-validate react-nebo15-validate validate.js

Аналитика

Сколько сервисов аналитики?

Какие события собираем?

Как собираем события?

Как отправляем?

Vue React Express JS
vue-events react-nebo15-events (my own) jquery

Интеграции

Как подключать сервисы?

Куда выносить конфигурации?

Релизы

Как упаковывать?

Где хранить?

Как конфигурировать релиз артефакт?

SPA in Tarball SPA in Docker MPA in Docker
tarball archive docker image docker image
Github release Docker hub Docker hub
config.js ENV + config.js ENV

Деплой

Как обновляем версию?

Как откатываем?

Tarball Docker
Nginx Kubernetes
Bash helm / kubectl

Тестирование

Что покрываем?

Как покрываем?

Vue React
karma jest
selenium selenium/howitzer
storybook-chrome-screenshot storybook-chrome-screenshot

Документирование

Что описываем?

Как и где описываем?

Рабочие процессы

VCS

Task tracker

Что в итоге?

Title Text

Код ревью

Что смотрим?

Автоматизируем?

Вопросы

Frontend Architecture

By Alexey Bondarenko

Frontend Architecture

  • 1,022