| sidebar_position | 1 |
|---|---|
| pagination_next | get-started/index |
OVERVIEW-ORIENTED
FeatureSliced - это методология для проектирования frontend проектов. Она нацелена на на разделение приложения согласно бизнес-логике и областям ответственности.
- Обеспечивает понятность, контролируемость и адаптивность архитектуры
- Основана на проверенных временем практиках проектирования и концепциях
SOLID,GRASP,DDD,Separation of Concerns,Vertical Slices,Public API,Isolation - Предлагает разделять проект согласно бизнес-юнитам
:::note Методология не привязана к конкретному стеку и применима к любым фронтенд-проектам в целом.
Но текущая версия приводит примеры и проработана на базе связки JavaScript + React
:::
Больше подробностей: "Концепции, Абстракции, Структура"
Обычно, подходы построения архитектуры фронтенда от проекта к проекту переизобретаются с нуля, пополняя тем самым "проектные знания"
Несмотря на то, что специфика фронтенд-проектов отличается не так значительно
При этом, неверно принятые решения зачастую приводят к проблемам масштабируемости проекта и команды.
И поэтому, вместо того, чтобы придумывать и документировать это каждый раз, хочется обобщить опыт и сформировать рабочую, проверенную и задокументированную методологию для проектирования архитектуры фронтенда.
Да, практик и паттернов много (SOLID, GRASP, DDD, ...)
Но для фронтенда крайне трудно найти устоявшиеся и конкретные подходы
Методология призвана упростить и стандартизировать декомпозицию логики для больших и долгоживущих проектов.
Для этого она вводит ряд концепций и абстракций, на которых может базироваться архитектура от проекта к проекту - отсюда получаем ряд преимуществ
:::info
Модуль - структурная единица проекта (файл / директория)
:::
Модули распределяются согласно скоупу влияния, бизнес-ответственности и техническому назначению
Благодаря этому архитектура стандартизируется и становится более простой для ознакомления
Каждый компонент архитектуры имеет свое назначение и не влияет на другие
Благодаря этому под новые требования можно независимо модифицировать функциональность приложения без непредвиденных последствий
Каждый модуль является независимым и самодостаточным
Благодаря этому можно переписать его с нуля без неожиданных сайд-эффектов
Увеличение функциональности ведет к значительно меньшему усложнению проекта, т.к. вся логика распределена детерминированно и изолированно
Благодаря этому легко добавлять и онбордить новых людей в команду, а также расширять функциональность проекта
Каждый модуль имеет свои ограничения и рекоммендации на переиспользуемость согласно своему слою
Благодаря этому сохраняется баланс между соблюдением принципа DRY и возможности кастомизировать логику модуля без оверхедных переопределений
import Row from "@site/src/shared/ui/row/tmpl.mdx" import { RocketOutlined, ThunderboltOutlined, FundViewOutlined } from "@ant-design/icons"; import Link from "@docusaurus/Link";
<Row title="Быстрый старт" description="Быстрое погружение в методологию" to="/docs/get-started" Icon={"🚀"} tags={['Основы','Быстрый старт','Мотивация']} /> <Row title="Гайды" description="Практические гайды и примеры по применению Feature Sliced" to="/docs/guides" Icon={"🎯"} tags={['v1','Легаси','Примеры']} /> <Row title="Концепции" description="Ключевые концепции для более эффективного понимания и применения" to="/docs/concepts" Icon={"🧩"} tags={['Декомпозиция','Изоляция','Public API']} /> <Row title="Справочник" description="Справочная информация по ключевым понятиям" to="/docs/reference" Icon={"📚"} tags={['Глоссарий','Слои','Сегменты']} /> <Row title="О методологии" description="Философия методологии, ее цели и место в современном фронтенде" to="/docs/about" Icon={"🍰"} tags={['Миссия','Продвижение & Интеграция']} /> <Row title="Community" description="Комьюнити-ресурсы и дополнительные материалы" to="/docs/community" Icon={"💫"} tags={['Awesome','Команда', 'Контрибьютинг']} /> <Row title="Примеры" description="Примеры проектов, спроектированных с Feature Sliced" to="/examples" Icon={"🛠"} />

