Fix lwF1, add lwF2

This commit is contained in:
Vladislav Moiseev
2025-03-18 23:00:42 +04:00
parent 2f6140ac25
commit d96628b943
3 changed files with 63 additions and 17 deletions

View File

@@ -18,7 +18,7 @@
Frontend: Frontend:
- [Лабораторная работа №F1 - Макет одностраничного сайта (Figma)](#) - [Лабораторная работа №F1 - Макет одностраничного сайта (Figma)](./lwF1/README.md)
- [Лабораторная работа №F2 - Каркас одностраничного веб-приложения (React)](#) - [Лабораторная работа №F2 - Каркас одностраничного веб-приложения (React)](#)
- [Лабораторная работа №F3 - Стилизация веб-приложения (React)](#) - [Лабораторная работа №F3 - Стилизация веб-приложения (React)](#)
- [Лабораторная работа №F4 - Взаимодействие с API (Axios)](#) - [Лабораторная работа №F4 - Взаимодействие с API (Axios)](#)

View File

@@ -1,4 +1,4 @@
# Лабораторная работа №1 - Макет одностраничного сайта (Figma) # Лабораторная работа №F1 - Макет одностраничного сайта (Figma)
## Цель работы ## Цель работы

View File

@@ -1,16 +1,16 @@
# Лабораторная работа №F1 - Одностраничное приложение (TypeScript) # Лабораторная работа №F2 - Каркас одностраничного веб-приложения (React)
## Цель работы ## Цель работы
Освоение среды локальной фронтенд-разработки на базе NodeJS. Освоение среды локальной фронтенд-разработки на базе NodeJS.
Освоение языка программирования TypeScript. Освоение языка программирования TypeScript.
Освоение библиотеки для построения одностраничных приложений: React, Vue или другой. Освоение библиотеки для построения одностраничных приложений React.
## Ход работы ## Ход работы
1. Развернуть локальную среду разработки для создания одностраничных (SPA) приложений. 1. Развернуть локальную среду разработки для создания одностраничных (SPA) приложений.
2. Создать шаблон приложения на выбранной технологии с использованием языка TypeScript. 2. Создать шаблон приложения с использованием языка TypeScript и технологии React.
3. Изменить шаблон, добавив несколько компонентов различного назначения. 3. Изменить шаблон, добавив компоненты на основании макета из л/р F1.
> Задание описано для React, однако можете исполоьзовать в качестве аналога любую другую похожую технологию. > Задание описано для React, однако можете исполоьзовать в качестве аналога любую другую похожую технологию.
@@ -18,7 +18,7 @@
Необходимо установить следующий софт: Необходимо установить следующий софт:
1. NodeJS: <https://nodejs.org/en/download/>. 1. NodeJS: <https://nodejs.org/en/download/>, версия LTS.
2. Visual Studio Code: <https://code.visualstudio.com/download>. 2. Visual Studio Code: <https://code.visualstudio.com/download>.
3. Google Chrome с расширением React Developer Tools: <https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ru>. 3. Google Chrome с расширением React Developer Tools: <https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ru>.
@@ -29,9 +29,9 @@
```bash ```bash
$ node --version $ node --version
v20.11.0 v22.14.0
$ npx --version $ npx --version
10.2.4 10.9.2
``` ```
> Если при выполнении команды отображается номер версии - всё хорошо. > Если при выполнении команды отображается номер версии - всё хорошо.
@@ -39,15 +39,18 @@ $ npx --version
## Создание первого SPA-приложения ## Создание первого SPA-приложения
Для создания первого SPA-приложения создайте пустую папку, откройте её в VS Code и во встроенном терминале выполните следующую команду: `npm create vite@latest ip-lw-f01`. Для создания первого SPA-приложения создайте пустую папку, откройте её в VS Code и во встроенном терминале выполните следующую команду: `npm create vite@latest`.
Она запускает процесс создания простейшего SPA-приложения в папке _ip-lw-f01_. Она запускает процесс создания простейшего SPA-приложения.
Для использования React выберите `React``TypeScript`.
Введите название проекта, например, `ip-lwf2`.
Для использования React выберите `React``TypeScript + SWC`.
В конце должно возникнуть сообщение: В конце должно возникнуть сообщение:
``` ```
Done. Now run: Done. Now run:
cd ip-lw-f01 cd ip-lwf2
npm install npm install
npm run dev npm run dev
``` ```
@@ -56,7 +59,7 @@ Done. Now run:
В конце должны получить похожий вывод: В конце должны получить похожий вывод:
``` ```
VITE v5.2.9 ready in 601 ms VITE v6.2.2 ready in 233 ms
➜ Local: http://localhost:5173/ ➜ Local: http://localhost:5173/
➜ Network: use --host to expose ➜ Network: use --host to expose
@@ -97,11 +100,11 @@ TypeScript — это диалект ECMAScript, в котором добавл
## Изучение React ## Изучение React
Для понимания того, что такое React, рекомендуется ознакомиться с официальной документацией: <https://ru.reactjs.org/docs/getting-started.html> и <https://ru.reactjs.org/tutorial/tutorial.html>. Для понимания того, что такое React, рекомендуется ознакомиться с официальной документацией: <https://ru.react.dev/>.
Знакомство с React очень подробное и понятное. Знакомство с React очень подробное и понятное.
Вам стоит понять, чем разработка на React отличается от той разработки приложений, что была у вас до этого. Вам стоит понять, чем разработка на React отличается от той разработки приложений, что была у вас до этого.
## Создание своих компонентов ## Создание своих компонентов на примере счётчика кликов
Когда вы разобрались, что такое компоненты, давайте добавим собственный. Когда вы разобрались, что такое компоненты, давайте добавим собственный.
Предположим, мы хотим добавить компонент, который будет показывать кнопку со счётчиком нажатия. Предположим, мы хотим добавить компонент, который будет показывать кнопку со счётчиком нажатия.
@@ -214,7 +217,50 @@ export default Button;
``` ```
Вам необходимо самостоятельно понять, что за `onClick` и что необходимо прописать в разметке, чтобы оно заработало. Вам необходимо самостоятельно понять, что за `onClick` и что необходимо прописать в разметке, чтобы оно заработало.
Также следует заиспользовать компонент в `Counter.tsx` вместо `<button>...</button>`.
## Декомпозиция комопнентов
Компоненты в React могут включать в себя другие компоненты.
Таким образом, можно выстроить дерево компонентов от общих к конкретным.
Например, таким образом:
- App
- Header
- Body
- Footer
We need to go deeper:
- App
- Header
- Title
- Logotype
- Text
- NavBar
- Link
- Body
- Main
- Title
- Subtitle
- Price
- PriceAmount
- PriceDescription
- Feedback
- Form
- TextBox
- Button
- Footer
- Contacts
- Map
Каждый из пунктов выше может быть выделен в отдельный компонент со своим набором пропсов, чтобы из их комбинации можно было собрать наш лендинг из л/р 1.
Предлагается компоненты положить по следующим директориям:
- `src/components` - общие компоненты: ссылки, обёртки блоков, поля ввода, кнопки.
- `src/blocks` - описание блоков сайта: шапка, цены, отзывы, подвал.
- `src/forms` - описание форм (обычно одна форма).
## Демонстрация работы ## Демонстрация работы