Files
cherrypick/website/i18n/ru/docusaurus-plugin-content-docs/current/advanced-features/hierarchical-subscopes.md
Sergey Penkovsky 9fee26c524 feat(i18n): add initial Russian localization for documentation and site config
- Added full Russian translations for all main documentation sections () into .
- Sections translated include: key features, installation, getting started, all core concepts, advanced features, API reference, FAQ, links, additional modules, contributing, and license.
- Updated  to ensure language switching is available and Russian locale is active.
- Each Russian file preserves the structure and formatting of the original Markdown, with machine-aided draft translation for immediate use.
- Lays the groundwork for UI language switching (en/ru) and enables further manual translation refinement and review.
2025-08-14 15:46:53 +03:00

2.6 KiB
Raw Blame History

sidebar_position
sidebar_position
1

Иерархические подскоупы

CherryPick поддерживает иерархическую структуру скоупов, что позволяет строить сложные и модульные графы зависимостей для профессиональных архитектур приложений. Каждый подскоуп наследует зависимости родителя и позволяет переопределять их локально.

Основные моменты

  • Подскоупы — дочерние скоупы, открываемые от любого существующего (в том числе root).
  • Зависимости подскоупа перекрывают родительские при разрешении.
  • Если зависимость не найдена в подскоупе, CherryPick ищет её выше по иерархии.
  • Подскоупы могут иметь собственные модули, "жизненный цикл", Disposable-объекты.
  • Можно делать вложенность любой глубины для фич, компонентов и т.д.

Пример

final rootScope = CherryPick.openRootScope();
rootScope.installModules([AppModule()]);

// Открыть подскоуп для функции/страницы
final userFeatureScope = rootScope.openSubScope('userFeature');
userFeatureScope.installModules([UserFeatureModule()]);

// В userFeatureScope сперва ищет в своей области
final userService = userFeatureScope.resolve<UserService>();

// Если не нашлось — идёт в rootScope
final sharedService = userFeatureScope.resolve<SharedService>();

// Подскоупы можно вкладывать друг в друга сколь угодно глубоко
final dialogScope = userFeatureScope.openSubScope('dialog');
dialogScope.installModules([DialogModule()]);
final dialogManager = dialogScope.resolve<DialogManager>();

Применение

  • Модульная изоляция частей/экранов с собственными зависимостями
  • Переопределение сервисов для конкретных сценариев/навигации
  • Управление жизнью и освобождением ресурсов по группам

Совет: Всегда закрывайте подскоупы, когда они больше не нужны, чтобы освободить ресурсы.