Skip to content

Commit 644b583

Browse files
authored
Merge pull request tomalaforge#658 from webbomj/translate-challenge-5
docs(ru): added translate 5-crud.md
2 parents d8da912 + 5c179b4 commit 644b583

File tree

1 file changed

+52
-0
lines changed
  • docs/src/content/docs/ru/challenges/angular

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: 🟢 Crud приложение
3+
description: Задача 5 посвящена рефакторингу crud-приложения
4+
author: thomas-laforge
5+
contributors:
6+
- webbomj
7+
challengeNumber: 5
8+
command: angular-crud
9+
sidebar:
10+
order: 2
11+
---
12+
13+
## Информация
14+
15+
Взаимодействие и синхронизация глобального/локального состояния с вашей серверной частью - это основа любого приложения. Вам необходимо освоить следующие рекомендации для создания надежных приложений на Angular.
16+
17+
## Обзор
18+
19+
В этом упражнении у вас есть небольшое CRUD приложение, которое получает список задач (TODOS), обновляет и удаляет некоторые задачи.
20+
21+
В настоящее время у нас есть работающий пример, но он наполнен множеством плохих практик.
22+
23+
### Шаг 1: рефакторинг с учетом лучших практик
24+
25+
Что вам нужно будет сделать:
26+
27+
- Избегайте **any** в качестве типа. Использование интерфейсов Typescript предотвращает ошибки
28+
- Используйте **отдельную службу** для всех ваших http-запросов и используйте **Signal** для вашего списка задач
29+
- Не **изменяйте** данные (пример ниже)
30+
31+
```typescript
32+
// Избегайте этого
33+
this.todos[todoUpdated.id - 1] = todoUpdated;
34+
35+
// Предпочитаю что-то вроде этого кода, но он нуждается в улучшении, потому что мы все еще хотим тот же порядок в списке
36+
this.todos = [...this.todos.filter((t) => t.id !== todoUpdated.id), todoUpdated];
37+
```
38+
39+
### Шаг 2: Улучшаем
40+
41+
- Добавьте кнопку **Delete**: _<a href="https://jsonplaceholder.typicode.com/" target="_blank">Документация к fake API</a>_
42+
- Обработайте **ошибки** правильно. _(Глобально)_
43+
- Добавьте глобальный **loading** индикатор загрузки. _Вы можете использовать MatProgressSpinnerModule_
44+
45+
### Шаг 3: Удобство в обслуживании!! Добавьте немного тестов
46+
47+
- Добавьте 2/3 тестов
48+
49+
### Шаг 4: Благоговение!!! овладейте своим состоянием.
50+
51+
- Используйте **component store of ngrx**, **ngrx/store**, **rxAngular**, **tanstack-query** или **ngrx/signal-store** как локальное состояние вашего компонента.
52+
- Добавьте **локальный** индикатор Loading/Error, например, только для обрабатываемого Todo и **отключите (disable)** все кнопки обрабатываемого Todo. _(Подсказка: вам нужно будет создать ItemComponent)_

0 commit comments

Comments
 (0)