update typescript, update docs
This commit is contained in:
@@ -3,7 +3,6 @@ sidebar_position: 2
|
||||
---
|
||||
|
||||
# Классическая архитектура
|
||||
Источник: DeepSeek
|
||||
|
||||
Layer-based architecture (архитектура на основе слоёв) — это подход к организации кода, при котором приложение разделяется на несколько логических слоёв, каждый из которых отвечает за определённый аспект функциональности. Этот метод широко используется как во фронтенд-, так и в бэкенд-разработке и помогает создавать структурированные, поддерживаемые и масштабируемые приложения.
|
||||
|
||||
@@ -107,4 +106,6 @@ src/
|
||||
- Подходит для крупных проектов с множеством фич.
|
||||
2. **Domain-driven Design (DDD):**
|
||||
- Организация кода вокруг доменных областей (например, `user`, `order`, `product`).
|
||||
- Часто используется в бэкенд-разработке.
|
||||
- Часто используется в бэкенд-разработке.
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 3
|
||||
---
|
||||
|
||||
# Atomic design
|
||||
Источник: DeepSeek
|
||||
|
||||
Atomic Design — это методология проектирования и организации пользовательских интерфейсов, предложенная Брэдом Фростом (Brad Frost). Она основана на идее разделения интерфейса на небольшие, независимые и переиспользуемые компоненты, которые затем комбинируются для создания более сложных структур. Название методологии вдохновлено химией: так же, как молекулы состоят из атомов, интерфейсы состоят из базовых компонентов.
|
||||
|
||||
@@ -96,6 +95,4 @@ src/
|
||||
- Когда требуется высокая согласованность интерфейса.
|
||||
- В командах, где дизайнеры и разработчики тесно взаимодействуют.
|
||||
|
||||
|
||||
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 4
|
||||
---
|
||||
|
||||
# Доменная архитектура
|
||||
Источник: DeepSeek
|
||||
|
||||
**Domain-Driven Design (DDD)** — это подход к разработке программного обеспечения, который фокусируется на моделировании бизнес-логики и организации кода вокруг доменных областей (бизнес-контекстов). Хотя DDD изначально был разработан для бэкенд-разработки, его принципы могут быть успешно применены и во фронтенде, особенно в сложных приложениях с богатой бизнес-логикой.
|
||||
|
||||
@@ -100,4 +99,6 @@ src/
|
||||
## Когда использовать DDD во фронтенде
|
||||
В сложных приложениях с богатой бизнес-логикой.
|
||||
В командах, где разработчики и бизнес-эксперты тесно взаимодействуют.
|
||||
Когда требуется высокая степень модульности и переиспользуемости.
|
||||
Когда требуется высокая степень модульности и переиспользуемости.
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 5
|
||||
---
|
||||
|
||||
# Feature slice design
|
||||
Источник: DeepSeek
|
||||
|
||||
**Feature Slice Design (FSD)** — это методология проектирования и организации кода во фронтенд-разработке, которая фокусируется на разделении приложения на независимые, функционально завершённые блоки (срезы), каждый из которых соответствует определённой фиче (функциональности) продукта. Этот подход помогает создавать более структурированные, масштабируемые и поддерживаемые приложения.
|
||||
|
||||
@@ -113,4 +112,6 @@ src/
|
||||
|
||||
## Альтернативы:
|
||||
- **Layer-based architecture** (разделение на слои, например, components, pages, store).
|
||||
- **Domain-driven design (DDD)** (организация кода вокруг доменных областей).
|
||||
- **Domain-driven design (DDD)** (организация кода вокруг доменных областей).
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 6
|
||||
---
|
||||
|
||||
# Micro frontend
|
||||
Источник: DeepSeek
|
||||
|
||||
Микрофронтенды (Micro Frontends) — это архитектурный подход, который позволяет разделить фронтенд-приложение на независимые, слабо связанные части, каждая из которых может разрабатываться, тестироваться и развертываться отдельно. Этот подход вдохновлен микросервисной архитектурой и применяется для создания масштабируемых и поддерживаемых фронтенд-приложений.
|
||||
|
||||
@@ -114,4 +113,6 @@ sidebar_position: 6
|
||||
## Недостатки микрофронтендов:
|
||||
1. Сложность интеграции: Требуется четкая организация взаимодействия между микрофронтендами.
|
||||
2. Дублирование кода: Возможно дублирование общих ресурсов, если они не вынесены в отдельные модули.
|
||||
3. Производительность: Загрузка нескольких микрофронтендов может увеличить время загрузки приложения.
|
||||
3. Производительность: Загрузка нескольких микрофронтендов может увеличить время загрузки приложения.
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 7
|
||||
---
|
||||
|
||||
# Test driven development
|
||||
Источник: DeepSeek
|
||||
|
||||
TDD (Test-Driven Development) — это методология разработки программного обеспечения, в которой написание тестов предшествует написанию кода. Основная идея TDD заключается в том, что разработчик сначала пишет тест для новой функциональности, а затем реализует код, который делает этот тест успешным. Этот процесс повторяется для каждой новой функции или улучшения.
|
||||
|
||||
@@ -66,3 +65,4 @@ TDD основан на нескольких ключевых принципах
|
||||
3. Не всегда подходит:
|
||||
- TDD может быть избыточным для небольших проектов или прототипов.
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
@@ -3,8 +3,6 @@ sidebar_position: 8
|
||||
---
|
||||
|
||||
# Принципы разработки
|
||||
Источник: DeepSeek \
|
||||
Дополнительный источник: [https://habr.com/ru/companies/itelma/articles/546372/](https://habr.com/ru/companies/itelma/articles/546372/)
|
||||
|
||||
## YAGNI
|
||||
_You Aren’t Gonna Need It / Вам это не понадобится_
|
||||
@@ -153,3 +151,6 @@ _Keep It Simple, Stupid / Будь проще_
|
||||
2. **Поддерживаемость:** Упрощается понимание и исправление ошибок.
|
||||
3. **Тестируемость:** Код, соответствующий SOLID, легче тестировать.
|
||||
4. **Масштабируемость:** Система становится более устойчивой к изменениям и росту.
|
||||
|
||||
🚀 **_Источник: DeepSeek_**
|
||||
dДополнительный источник: [https://habr.com/ru/companies/itelma/articles/546372/](https://habr.com/ru/companies/itelma/articles/546372/)
|
||||
|
||||
107
docs/architecture/09-oop.md
Normal file
107
docs/architecture/09-oop.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
---
|
||||
|
||||
# ООП
|
||||
Принципы ООП (Объектно-ориентированного программирования)
|
||||
|
||||
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции объектов, которые объединяют данные и методы для работы с ними. Основные принципы ООП:
|
||||
|
||||
## 1. Инкапсуляция
|
||||
**Смысл:** Объединение данных (свойств) и методов внутри объекта с контролем доступа. \
|
||||
**Зачем?** Защита данных, предотвращение прямого изменения извне.
|
||||
```ts
|
||||
class User {
|
||||
private password: string;
|
||||
|
||||
constructor(public name: string, password: string) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
checkPassword(input: string): boolean {
|
||||
return this.password === input;
|
||||
}
|
||||
}
|
||||
|
||||
const user = new User("Alice", "secret123");
|
||||
console.log(user.checkPassword("wrong")); // false
|
||||
console.log(user.checkPassword("secret123")); // true
|
||||
```
|
||||
📌 `private` скрывает `password`, и его нельзя изменить напрямую.
|
||||
|
||||
## 2. Наследование
|
||||
**Смысл:** Позволяет создавать новые классы на основе существующих. \
|
||||
**Зачем?** Повторное использование кода и расширение функциональности.
|
||||
```ts
|
||||
class Animal {
|
||||
constructor(public name: string) {}
|
||||
makeSound() {
|
||||
console.log("Some sound...");
|
||||
}
|
||||
}
|
||||
|
||||
class Dog extends Animal {
|
||||
makeSound() {
|
||||
console.log("Woof!");
|
||||
}
|
||||
}
|
||||
|
||||
const dog = new Dog("Buddy");
|
||||
dog.makeSound(); // Woof!
|
||||
```
|
||||
|
||||
📌 `Dog` наследует `Animal`, но переопределяет метод `makeSound()`.
|
||||
|
||||
## 3. Полиморфизм
|
||||
**Смысл:** Разные объекты могут иметь **одинаковый интерфейс**, но разное поведение. \
|
||||
**Зачем?** Универсальный код, который работает с разными типами объектов.
|
||||
```ts
|
||||
class Animal {
|
||||
constructor(public name: string) {}
|
||||
makeSound() {
|
||||
console.log("Some sound...");
|
||||
}
|
||||
}
|
||||
|
||||
class Dog extends Animal {
|
||||
makeSound() {
|
||||
console.log("Woof!");
|
||||
}
|
||||
}
|
||||
|
||||
const dog = new Dog("Buddy");
|
||||
dog.makeSound(); // Woof!
|
||||
```
|
||||
📌 `Penguin` изменяет логику `fly()`, но всё ещё является `Bird`.
|
||||
|
||||
## 4. Абстракция
|
||||
**Смысл:** Выделение **важных деталей**, скрытие реализации. \
|
||||
**Зачем?** Упрощение работы с кодом, фокус только на важном.
|
||||
```ts
|
||||
abstract class Transport {
|
||||
constructor(public speed: number) {}
|
||||
|
||||
abstract move(): void;
|
||||
}
|
||||
|
||||
class Car extends Transport {
|
||||
move() {
|
||||
console.log(`Driving at ${this.speed} km/h`);
|
||||
}
|
||||
}
|
||||
|
||||
const car = new Car(100);
|
||||
car.move(); // Driving at 100 km/h
|
||||
```
|
||||
📌 `abstract` запрещает создавать `Transport`, но заставляет `Car` реализовать `move()`.
|
||||
|
||||
## Итог
|
||||
- ✅ **Инкапсуляция** — скрываем детали и контролируем доступ.
|
||||
- ✅ **Наследование** — создаём новые классы на основе существующих.
|
||||
- ✅ **Полиморфизм** — разные классы могут вести себя по-разному.
|
||||
- ✅ **Абстракция** — скрываем сложные детали, оставляем главное.
|
||||
|
||||
🚀 ООП помогает писать **гибкий, переиспользуемый и читаемый код!**
|
||||
|
||||
|
||||
🚀 **_Источник: ChatGPT_**
|
||||
Reference in New Issue
Block a user