update git
This commit is contained in:
@@ -3,5 +3,70 @@ sidebar_position: 1
|
||||
---
|
||||
|
||||
# Браузер
|
||||
Источник: DeepSeek
|
||||
|
||||
Как работает браузер?
|
||||
Из каких модулей(интерфейс, домпарсер, js-движок, рендер, стораджи) состоит браузер
|
||||
|
||||
1. **Пользовательский интерфейс (UI)**
|
||||
- Это видимая часть браузера, с которой взаимодействует пользователь: адресная строка, кнопки "Назад" и "Вперед", меню, закладки и т.д.
|
||||
- Интерфейс позволяет пользователю управлять браузером и взаимодействовать с веб-страницами.
|
||||
2. Браузерный движок (Browser Engine)
|
||||
- Связывает интерфейс и движок рендеринга. Он отвечает за управление процессами загрузки страниц, обработки HTML, CSS и JavaScript.
|
||||
- Примеры: Blink (Chrome, Edge), Gecko (Firefox), WebKit (Safari).
|
||||
3. **Движок рендеринга (Rendering Engine)**
|
||||
- Отвечает за отображение содержимого веб-страницы на экране.
|
||||
- Основные задачи:
|
||||
- Парсинг HTML и CSS (разбор кода).
|
||||
- Построение DOM (Document Object Model) и CSSOM (CSS Object Model).
|
||||
- Создание дерева рендеринга (Render Tree).
|
||||
- Компоновка (Layout) и отрисовка (Painting) элементов на экране.
|
||||
- Примеры: Blink, WebKit, Gecko.
|
||||
4. **JavaScript-движок (JS Engine)**
|
||||
- Интерпретирует и выполняет JavaScript-код на странице.
|
||||
- Современные движки используют JIT-компиляцию (Just-In-Time) для оптимизации выполнения кода.
|
||||
- Примеры:
|
||||
- V8 (Chrome, Edge, Opera).
|
||||
- SpiderMonkey (Firefox).
|
||||
- JavaScriptCore (Safari).
|
||||
5. **Сетевой модуль (Networking)**
|
||||
- Отвечает за выполнение сетевых запросов (HTTP, HTTPS, WebSocket и т.д.).
|
||||
- Обрабатывает кеширование, куки, управляет соединениями и загрузкой ресурсов (HTML, CSS, JS, изображения, видео и т.д.).
|
||||
6. **Хранилище данных (Storage)**
|
||||
- Обеспечивает хранение данных на стороне клиента:
|
||||
- **LocalStorage** и **SessionStorage** для хранения ключей и значений.
|
||||
- **IndexedDB** для более сложных структур данных.
|
||||
- **Cookies** для хранения небольших объемов данных, связанных с сессией или пользователем.
|
||||
- Кеш браузера для временного хранения ресурсов (изображений, CSS, JS и т.д.).
|
||||
7. **Модуль работы с DOM (Document Object Model)**
|
||||
- Преобразует HTML-код в иерархическую структуру объектов (DOM-дерево), с которой может взаимодействовать JavaScript.
|
||||
- DOM позволяет динамически изменять содержимое, структуру и стили страницы.
|
||||
8. **Модуль работы с CSS (CSS Parser)**
|
||||
- Анализирует CSS-код и преобразует его в CSSOM (CSS Object Model), который используется для стилизации элементов DOM.
|
||||
9. **Модуль компоновки (Layout Engine)**
|
||||
- Рассчитывает положение и размеры элементов на странице на основе DOM и CSSOM.
|
||||
- Создает дерево рендеринга (Render Tree), которое используется для отрисовки.
|
||||
10. **Модуль отрисовки (Painting)**
|
||||
- Отвечает за отображение пикселей на экране на основе данных из дерева рендеринга.
|
||||
- Использует графические библиотеки и API (например, OpenGL, DirectX) для рендеринга.
|
||||
11. **Модуль безопасности (Security)**
|
||||
- Обеспечивает защиту пользователя от вредоносных сайтов и атак.
|
||||
- Контролирует политики безопасности, такие как CORS (Cross-Origin Resource Sharing), HTTPS, защита от XSS (Cross-Site Scripting) и CSRF (Cross-Site Request Forgery).
|
||||
12. **Модуль управления вкладками и процессами**
|
||||
- Современные браузеры используют многопроцессорную архитектуру, где каждая вкладка или расширение работает в отдельном процессе.
|
||||
- Это повышает стабильность и безопасность браузера.
|
||||
13. **Модуль расширений (Extensions)**
|
||||
- Позволяет добавлять дополнительные функции в браузер через расширения и плагины.
|
||||
- Примеры: блокировщики рекламы, менеджеры паролей, инструменты разработчика.
|
||||
14. **Инструменты разработчика (DevTools)**
|
||||
- Встроенные инструменты для отладки и анализа веб-страниц.
|
||||
- Включают инспектор элементов, консоль JavaScript, сетевой анализатор, профилировщик производительности и т.д.
|
||||
|
||||
Как это работает вместе:
|
||||
1. Пользователь вводит URL в адресную строку.
|
||||
2. Сетевой модуль загружает HTML, CSS, JavaScript и другие ресурсы.
|
||||
3. Движок рендеринга парсит HTML и CSS, создает DOM и CSSOM.
|
||||
4. JavaScript-движок выполняет JS-код, который может изменять DOM и CSSOM.
|
||||
5. Движок рендеринга строит дерево рендеринга и рассчитывает компоновку.
|
||||
6. Модуль отрисовки отображает пиксели на экране.
|
||||
7. Пользователь видит страницу и взаимодействует с ней через интерфейс.
|
||||
@@ -3,3 +3,64 @@ sidebar_position: 2
|
||||
---
|
||||
|
||||
# DOM
|
||||
Источник: DeepSeek
|
||||
|
||||
DOM (Document Object Model) — это программный интерфейс для работы с HTML и XML документами. Он представляет структуру документа в виде дерева объектов, где каждый узел соответствует элементу, атрибуту или тексту на странице. DOM позволяет программам (например, JavaScript) динамически изменять содержимое, структуру и стили веб-страницы.
|
||||
|
||||
**Преимущества DOM:**
|
||||
- Универсальность: работает с любыми HTML/XML документами.
|
||||
- Гибкость: позволяет динамически изменять страницу.
|
||||
- Поддержка всеми современными браузерами.
|
||||
|
||||
**Недостатки DOM:**
|
||||
- Медленная работа с большими документами (из-за сложности дерева).
|
||||
- Высокое потребление памяти для сложных страниц.
|
||||
|
||||
## Основные понятия DOM:
|
||||
1. **Дерево узлов (Node Tree):**
|
||||
- DOM представляет документ в виде иерархического дерева узлов.
|
||||
- Каждый HTML-элемент, атрибут, текст и даже комментарий — это узел (Node) в этом дереве.
|
||||
2. **Типы узлов:**
|
||||
- **Элемент (Element):** HTML-теги (например, `<div>`, `<p>`, `<a>`).
|
||||
- **Атрибут (Attribute):** Атрибуты элементов (например, `class`, `id`, `href`).
|
||||
- **Текст (Text):** Текстовое содержимое внутри элементов.
|
||||
- **Комментарий (Comment):** Комментарии в HTML-коде.
|
||||
- **Документ (Document):** Корневой узел, представляющий весь документ.
|
||||
3. **DOM-элементы:**
|
||||
- Каждый HTML-элемент представлен как объект с свойствами и методами.
|
||||
- Например, у элемента `<div>` есть свойства `className`, `id`, `innerHTML` и методы `appendChild()`, `remove()`.
|
||||
|
||||
## Как создается DOM:
|
||||
1. Браузер загружает HTML-документ.
|
||||
2. Парсер HTML разбирает код и создает дерево DOM.
|
||||
3. Каждый элемент, атрибут и текст становятся узлами в этом дереве.
|
||||
4. DOM становится доступным для JavaScript и других скриптов.
|
||||
|
||||
## Зачем нужен DOM?
|
||||
1. **Динамическое изменение страницы:**
|
||||
- JavaScript может использовать DOM для добавления, удаления или изменения элементов на странице.
|
||||
- Пример: изменение текста, добавление новых элементов, изменение стилей.
|
||||
2. **Взаимодействие с пользователем:**
|
||||
- DOM позволяет реагировать на действия пользователя (клики, ввод текста и т.д.).
|
||||
- Пример: обработка событий (click, mouseover, keydown).
|
||||
3. **Доступ к данным:**
|
||||
- DOM предоставляет методы для поиска и извлечения данных из документа.
|
||||
- Пример: поиск элементов по классу, тегу или идентификатору.
|
||||
|
||||
## Основные методы работы с DOM:
|
||||
1. Поиск элементов:
|
||||
- `document.getElementById('id')` — поиск по идентификатору.
|
||||
- `document.querySelector('.class')` — поиск по CSS-селектору.
|
||||
- `document.getElementsByTagName('div')` — поиск по тегу.
|
||||
2. Изменение содержимого:
|
||||
- `element.innerHTML = 'Новый текст'` — изменение HTML-содержимого.
|
||||
- `element.textContent = 'Текст'` — изменение текстового содержимого.
|
||||
3. Изменение стилей:
|
||||
- `element.style.color = 'red'` — изменение стиля элемента.
|
||||
4. Добавление и удаление элементов:
|
||||
- `document.createElement('div')` — создание нового элемента.
|
||||
- `parentElement.appendChild(newElement)` — добавление элемента в DOM.
|
||||
- `element.remove()` — удаление элемента.
|
||||
5. Работа с атрибутами:
|
||||
- `element.getAttribute('href')` — получение значения атрибута.
|
||||
- `element.setAttribute('class', 'new-class')` — установка атрибута.
|
||||
@@ -3,3 +3,96 @@ sidebar_position: 3
|
||||
---
|
||||
|
||||
# CSSOM
|
||||
Источник: DeepSeek
|
||||
|
||||
CSSOM (CSS Object Model) — это программное представление CSS-стилей в виде иерархической структуры объектов, аналогично
|
||||
тому, как DOM (Document Object Model) представляет HTML-документ. CSSOM позволяет JavaScript и другим программам
|
||||
динамически читать и изменять стили элементов на веб-странице.
|
||||
|
||||
## Зачем нужен CSSOM?
|
||||
|
||||
1. **Представление стилей:**
|
||||
- CSSOM преобразует CSS-код в структуру, которую можно программно обрабатывать.
|
||||
- Это позволяет браузеру понимать, как стили применяются к элементам.
|
||||
2. **Динамическое изменение стилей:**
|
||||
- JavaScript может использовать CSSOM для изменения стилей элементов на лету.
|
||||
- Пример: изменение цвета, размера, положения элементов в ответ на действия пользователя.
|
||||
3. **Оптимизация рендеринга:**
|
||||
- CSSOM используется движком рендеринга браузера для построения дерева рендеринга (Render Tree), которое объединяет
|
||||
DOM и CSSOM для отображения страницы.
|
||||
|
||||
## Как создается CSSOM?
|
||||
|
||||
1. Браузер загружает CSS-файлы или встроенные стили (`<style>`).
|
||||
2. Парсер CSS разбирает CSS-код и создает дерево CSSOM.
|
||||
3. Каждое CSS-правило (селектор, свойство, значение) становится объектом в CSSOM.
|
||||
4. CSSOM связывается с DOM для применения стилей к элементам.
|
||||
|
||||
## Структура CSSOM
|
||||
|
||||
CSSOM представляет собой дерево объектов, где каждый узел соответствует CSS-правилу или группе правил. Основные
|
||||
компоненты:
|
||||
|
||||
1. **Стили (Styles):**
|
||||
- Каждое CSS-правило (например, `color: red;`) представлено как объект.
|
||||
2. **Селекторы (Selectors):**
|
||||
- Селекторы (например, `h1`, `.class`, `#id`) используются для определения, к каким элементам применяются стили.
|
||||
3. **Медиа-запросы (Media Queries):**
|
||||
- Медиа-запросы (например, `@media (max-width: 600px)`) представлены как отдельные узлы в CSSOM.
|
||||
- Они позволяют применять стили в зависимости от условий (размер экрана, ориентация устройства и т.д.).
|
||||
|
||||
CSSOM для этого CSS будет выглядеть примерно так:
|
||||
|
||||
```
|
||||
CSSOM
|
||||
├── body
|
||||
│ ├── font-family: Arial, sans-serif
|
||||
│ └── background-color: #f0f0f0
|
||||
├── h1
|
||||
│ ├── color: red
|
||||
│ └── font-size: 24px
|
||||
└── @media (max-width: 600px)
|
||||
└── h1
|
||||
└── font-size: 18px
|
||||
```
|
||||
|
||||
## Как CSSOM взаимодействует с DOM?
|
||||
|
||||
1. Браузер загружает HTML и CSS.
|
||||
2. Парсер HTML создает DOM, а парсер CSS создает CSSOM.
|
||||
3. DOM и CSSOM объединяются в дерево рендеринга (Render Tree).
|
||||
4. Дерево рендеринга используется для отображения страницы на экране.
|
||||
|
||||
## Использование CSSOM в JavaScript
|
||||
|
||||
JavaScript может взаимодействовать с CSSOM через объект document.styleSheets. Это позволяет:
|
||||
|
||||
- Читать и изменять стили элементов.
|
||||
- Добавлять или удалять CSS-правила.
|
||||
|
||||
### Преимущества CSSOM:
|
||||
|
||||
1. Динамическое управление стилями:
|
||||
- Позволяет изменять стили на лету, что полезно для создания интерактивных интерфейсов.
|
||||
2. Гибкость:
|
||||
- Можно добавлять, удалять или изменять CSS-правила программно.
|
||||
3. Интеграция с DOM:
|
||||
- CSSOM тесно связан с DOM, что позволяет легко управлять стилями элементов.
|
||||
|
||||
### Недостатки CSSOM:
|
||||
|
||||
1. Сложность:
|
||||
- Работа с CSSOM через JavaScript может быть сложной и требует понимания структуры CSS.
|
||||
2. Производительность:
|
||||
- Частые изменения стилей через CSSOM могут замедлить рендеринг страницы.
|
||||
|
||||
### Разница между DOM и CSSOM:
|
||||
|
||||
| DOM | CSSOM |
|
||||
|---------------------------------------------------|------------------------------------|
|
||||
| Представляет структуру HTML-документа. | Представляет структуру CSS-стилей. |
|
||||
| Состоит из узлов (элементы, текст, атрибуты). | Состоит из правил и свойств CSS. |
|
||||
| Используется для изменения содержимого страницы. | Используется для изменения стилей. |
|
||||
| Создается из HTML. | Создается из CSS. |
|
||||
|
||||
CSSOM — это важная часть процесса рендеринга веб-страниц, которая позволяет браузеру применять стили к элементам и динамически изменять их с помощью JavaScript.
|
||||
@@ -3,3 +3,70 @@ sidebar_position: 4
|
||||
---
|
||||
|
||||
# Critical render path
|
||||
Источник: DeepSeek
|
||||
|
||||
Критический путь рендеринга (Critical Rendering Path, CRP) — это последовательность шагов, которые браузер выполняет для преобразования HTML, CSS и JavaScript в пиксели на экране. Оптимизация критического пути рендеринга важна для ускорения загрузки и отображения веб-страниц, что напрямую влияет на пользовательский опыт.
|
||||
|
||||
## Основные этапы критического пути рендеринга:
|
||||
1. **Загрузка HTML:**
|
||||
- Браузер загружает HTML-документ и начинает его парсить.
|
||||
- Во время парсинга браузер встречает ссылки на внешние ресурсы (CSS, JavaScript, изображения) и начинает их загружать.
|
||||
2. **Построение DOM (Document Object Model):**
|
||||
- Браузер преобразует HTML в дерево DOM.
|
||||
- Каждый HTML-элемент становится узлом в DOM.
|
||||
3. **Загрузка CSS:**
|
||||
- Браузер загружает CSS-файлы и встроенные стили (`<style>`).
|
||||
- CSS парсится и преобразуется в CSSOM (CSS Object Model).
|
||||
4. **Построение CSSOM (CSS Object Model):**
|
||||
- CSSOM представляет собой дерево стилей, где каждый узел соответствует CSS-правилу.
|
||||
- CSSOM используется для определения стилей элементов.
|
||||
5. **Создание дерева рендеринга (Render Tree):**
|
||||
- Браузер объединяет DOM и CSSOM в дерево рендеринга.
|
||||
- Дерево рендеринга содержит только видимые элементы (например, элементы с `display: none` не включаются).
|
||||
6. **Компоновка (Layout):**
|
||||
- Браузер рассчитывает положение и размеры каждого элемента на странице.
|
||||
- Этот процесс также называется **рефлоу (reflow)**.
|
||||
7. **Отрисовка (Painting):**
|
||||
- Браузер отрисовывает пиксели на экране на основе данных из дерева рендеринга.
|
||||
- Этот процесс включает в себя растеризацию (rasterization) и отрисовку слоев.
|
||||
8. **Композиция (Composition):**
|
||||
- Браузер объединяет слои (например, элементы с `position: fixed` или анимации) для финального отображения.
|
||||
|
||||
## Как оптимизировать критический путь рендеринга?
|
||||
Оптимизация CRP направлена на ускорение загрузки и отображения контента, особенно "выше сгиба" (above the fold). Основные подходы:
|
||||
|
||||
1. **Минимизация размера файлов:**
|
||||
- Сжимайте HTML, CSS и JavaScript (например, с помощью Gzip или Brotli).
|
||||
- Удаляйте лишние пробелы, комментарии и неиспользуемый код.
|
||||
2. **Уменьшение количества ресурсов:**
|
||||
- Объединяйте CSS и JavaScript-файлы.
|
||||
- Используйте встроенные стили для критического CSS (Critical CSS).
|
||||
3. **Оптимизация загрузки CSS:**
|
||||
- Разделяйте CSS на критический и некритический.
|
||||
- Используйте `media`-атрибуты для загрузки только необходимых стилей:
|
||||
4. **Оптимизация загрузки JavaScript:**
|
||||
- Используйте атрибуты async или defer для загрузки скриптов без блокировки рендеринга:
|
||||
- Переносите скрипты в конец документа (перед закрывающим тегом `</body>`).
|
||||
5. **Приоритизация загрузки ресурсов:**
|
||||
- Используйте `<link rel="preload">` для приоритетной загрузки критических ресурсов:
|
||||
6. **Оптимизация изображений:**
|
||||
- Используйте современные форматы (WebP, AVIF).
|
||||
- Сжимайте изображения и используйте `srcset` для адаптивной загрузки.
|
||||
7. **Минимизация количества рефлоу и репинтов:**
|
||||
- Избегайте изменения стилей, которые вызывают рефлоу (например, `width`, `height`, `margin`).
|
||||
- Используйте `transform` и `opacity` для анимаций, так как они не вызывают рефлоу.
|
||||
8. **Использование кеширования:**
|
||||
- Настройте кеширование статических ресурсов (CSS, JS, изображения) на стороне сервера.
|
||||
|
||||
## Пример оптимизации CRP:
|
||||
1. **Критический CSS:**
|
||||
- Встраивайте стили, необходимые для отображения контента "выше", прямо в HTML
|
||||
2. **Асинхронная загрузка скриптов:**
|
||||
- Используйте async или defer для загрузки JavaScript
|
||||
3. **Предзагрузка шрифтов:**
|
||||
- Загружайте шрифты заранее, чтобы избежать задержек
|
||||
|
||||
## Почему это важно?
|
||||
- **Ускорение загрузки:** Оптимизация CRP уменьшает время до первого отображения контента (First Contentful Paint, FCP).
|
||||
- **Улучшение пользовательского опыта:** Быстрая загрузка страницы повышает удовлетворенность пользователей.
|
||||
- **SEO:** Скорость загрузки страницы влияет на ранжирование в поисковых системах.
|
||||
|
||||
@@ -2,4 +2,101 @@
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Browser Dev-tools
|
||||
# Dev-tools
|
||||
Источник: DeepSeek
|
||||
|
||||
DevTools (Инструменты разработчика) — это встроенный в браузер набор инструментов, предназначенный для отладки, анализа и оптимизации веб-страниц. Они предоставляют разработчикам возможность исследовать HTML, CSS, JavaScript, сетевые запросы, производительность и многое другое.
|
||||
|
||||
## Зачем нужны DevTools?
|
||||
1. **Отладка кода:**
|
||||
- Поиск и исправление ошибок в HTML, CSS и JavaScript.
|
||||
- Возможность пошагового выполнения кода и анализа переменных.
|
||||
2. **Анализ и изменение DOM и CSS:**
|
||||
- Просмотр и редактирование структуры HTML и стилей в реальном времени.
|
||||
- Тестирование изменений без необходимости обновления страницы.
|
||||
3. **Оптимизация производительности:**
|
||||
- Анализ скорости загрузки страницы.
|
||||
- Поиск узких мест в производительности (например, медленные скрипты или ресурсы).
|
||||
4. **Работа с сетью:**
|
||||
- Мониторинг сетевых запросов (HTTP, HTTPS, WebSocket).
|
||||
- Анализ времени загрузки ресурсов и их размера.
|
||||
5. **Тестирование адаптивности:**
|
||||
- Проверка отображения страницы на разных устройствах и разрешениях экрана.
|
||||
6. **Работа с JavaScript:**
|
||||
- Отладка скриптов, просмотр стека вызовов и значений переменных.
|
||||
- Профилирование кода для поиска узких мест.
|
||||
7. **Анализ безопасности:**
|
||||
- Проверка сертификатов, политик безопасности (CORS, CSP) и других аспектов.
|
||||
8. **Работа с хранилищами:**
|
||||
- Просмотр и редактирование данных в _LocalStorage_, _SessionStorage_, _Cookies_, _IndexedDB_.
|
||||
|
||||
|
||||
## Основные инструменты DevTools:
|
||||
1. **Инспектор элементов (Elements):**
|
||||
- Позволяет просматривать и редактировать HTML и CSS.
|
||||
- Можно изменять стили, добавлять или удалять элементы, видеть применяемые стили и их источники.
|
||||
2. **Консоль (Console):**
|
||||
- Показывает ошибки, предупреждения и логи JavaScript.
|
||||
- Позволяет выполнять JavaScript-код прямо в браузере.
|
||||
3. **Отладчик (Sources):**
|
||||
- Позволяет отлаживать JavaScript-код: ставить точки останова, пошагово выполнять код, анализировать переменные.
|
||||
4. **Сеть (Network):**
|
||||
- Показывает все сетевые запросы (HTML, CSS, JS, изображения, API и т.д.).
|
||||
- Включает информацию о времени загрузки, размере ресурсов, статусе запросов.
|
||||
5. **Производительность (Performance):**
|
||||
- Анализирует производительность страницы: время загрузки, выполнение скриптов, отрисовка.
|
||||
- Помогает находить узкие места, которые замедляют работу страницы.
|
||||
6. **Память (Memory):**
|
||||
- Позволяет анализировать использование памяти JavaScript.
|
||||
- Помогает находить утечки памяти.
|
||||
7. **Приложение (Application):**
|
||||
- Позволяет работать с хранилищами данных: LocalStorage, SessionStorage, Cookies, IndexedDB.
|
||||
- Также показывает кеш и сервис-воркеры.
|
||||
8. **Безопасность (Security):**
|
||||
- Показывает информацию о сертификатах, политиках безопасности (CORS, CSP) и других аспектах.
|
||||
9. **Адаптивный дизайн (Responsive Design Mode):**
|
||||
- Позволяет тестировать отображение страницы на разных устройствах и разрешениях экрана.
|
||||
10. **Lighthouse:**
|
||||
- Инструмент для аудита веб-страниц. Проверяет производительность, доступность, SEO и другие параметры.
|
||||
|
||||
## Как открыть DevTools?
|
||||
- **Горячие клавиши:**
|
||||
- Windows/Linux: `Ctrl + Shift + I` или `F12`.
|
||||
- Mac: `Cmd + Option + I`.
|
||||
- **Контекстное меню:**
|
||||
- Щелкните правой кнопкой мыши на странице и выберите "Исследовать элемент" (Inspect).
|
||||
|
||||
## Пример использования DevTools:
|
||||
1. **Изменение стилей:**
|
||||
- Откройте вкладку **Elements**.
|
||||
- Выберите элемент на странице и измените его стили в правой панели.
|
||||
2. **Отладка JavaScript:**
|
||||
- Откройте вкладку **Sources**.
|
||||
- Найдите нужный JavaScript-файл, поставьте точку останова и запустите отладку.
|
||||
3. **Анализ сетевых запросов:**
|
||||
- Откройте вкладку **Network**.
|
||||
- Перезагрузите страницу и посмотрите, какие ресурсы загружаются и сколько времени это занимает.
|
||||
4. **Тестирование адаптивности:**
|
||||
- Включите режим адаптивного дизайна (иконка с телефоном/планшетом).
|
||||
- Выберите устройство или введите собственное разрешение.
|
||||
5. **Аудит страницы:**
|
||||
- Откройте вкладку **Lighthouse**.
|
||||
- Запустите аудит и получите рекомендации по улучшению производительности, SEO и доступности.
|
||||
|
||||
## Преимущества DevTools:
|
||||
1. **Быстрое тестирование и отладка:**
|
||||
- Позволяет вносить изменения и сразу видеть результат.
|
||||
2. **Глубокий анализ:**
|
||||
- Предоставляет детальную информацию о работе страницы.
|
||||
3. **Интеграция с браузером:**
|
||||
- Не требует установки дополнительных программ.
|
||||
4. **Поддержка современных стандартов:**
|
||||
- Постоянно обновляется и поддерживает новые технологии.
|
||||
|
||||
## Недостатки DevTools:
|
||||
1. **Сложность для новичков:**
|
||||
- Может быть сложно разобраться во всех функциях.
|
||||
2. **Ограниченная поддержка в старых браузерах:**
|
||||
- Некоторые функции могут отсутствовать в устаревших версиях браузеров.
|
||||
|
||||
**DevTools** — это незаменимый инструмент для веб-разработчиков, который помогает создавать, отлаживать и оптимизировать веб-страницы.
|
||||
@@ -3,3 +3,25 @@ sidebar_position: 1
|
||||
---
|
||||
|
||||
# Git
|
||||
Источник: DeepSeek
|
||||
|
||||
Git — это распределённая система управления версиями, которая позволяет отслеживать изменения в файлах и проектах. Она широко используется в разработке программного обеспечения для управления исходным кодом, но может применяться и для других типов файлов.
|
||||
|
||||
## Основные возможности Git:
|
||||
1. **Отслеживание изменений:** Git сохраняет историю всех изменений в проекте, что позволяет вернуться к любой предыдущей версии.
|
||||
2. **Ветвление:** Можно создавать ветки (**branches**) для работы над разными версиями проекта одновременно.
|
||||
3. **Слияние изменений:** Изменения из разных веток можно объединять (**merge**).
|
||||
4. **Распределённость:** Каждый разработчик имеет полную копию репозитория, что позволяет работать автономно.
|
||||
5. **Коллаборация:** Git упрощает совместную работу над проектами, особенно с использованием платформ вроде _GitHub_, _GitLab_ или _Bitbucket_.
|
||||
|
||||
## Основные команды Git:
|
||||
- `git init` — инициализирует новый репозиторий.
|
||||
- `git clone` — копирует удалённый репозиторий на локальную машину.
|
||||
- `git add` — добавляет изменения в индекс для последующего коммита.
|
||||
- `git commit` — сохраняет изменения в репозитории.
|
||||
- `git push` — отправляет изменения в удалённый репозиторий.
|
||||
- `git pull` — загружает изменения из удалённого репозитория.
|
||||
- `git branch` — управляет ветками.
|
||||
- `git merge` — объединяет ветки.
|
||||
|
||||
Git был создан Линусом Торвальдсом в 2005 году для разработки ядра Linux и с тех пор стал стандартом в индустрии разработки.
|
||||
@@ -3,3 +3,53 @@ sidebar_position: 2
|
||||
---
|
||||
|
||||
# CI/CD
|
||||
Источник: DeepSeek
|
||||
|
||||
CI/CD (Continuous Integration / Continuous Deployment или Continuous Delivery) — это набор практик и инструментов, направленных на автоматизацию процессов разработки, тестирования и развертывания программного обеспечения. CI/CD помогает командам разработчиков быстрее и надежнее выпускать качественные продукты.
|
||||
|
||||
## CI
|
||||
**Continuous Integration** — Непрерывная интеграция
|
||||
Это процесс автоматического слияния изменений кода от нескольких разработчиков в общую ветку (например, `main` или `master`).
|
||||
|
||||
**Основные цели CI:**
|
||||
- **Раннее обнаружение ошибок:** Автоматические тесты запускаются при каждом изменении кода.
|
||||
- **Упрощение интеграции:** Регулярное слияние кода уменьшает конфликты между изменениями.
|
||||
- **Повышение качества кода:** Постоянное тестирование и проверка кода.
|
||||
|
||||
**Как это работает:**
|
||||
1. Разработчик делает изменения в коде и отправляет их в репозиторий (например, Git).
|
||||
2. CI-система (например, Jenkins, GitLab CI, GitHub Actions) автоматически запускает сборку (build) и тесты.
|
||||
3. Если тесты проходят успешно, изменения интегрируются в основную ветку.
|
||||
|
||||
## CD
|
||||
Continuous Deployment / Continuous Delivery — Непрерывное развертывание/поставка
|
||||
|
||||
Это процесс автоматического развертывания кода в production или staging-среду после успешного прохождения CI.
|
||||
- **Continuous Delivery:** Код автоматически готов к развертыванию, но решение о выпуске принимается вручную.
|
||||
- **Continuous Deployment:** Код автоматически развертывается в production без ручного вмешательства.
|
||||
|
||||
## Как это работает:
|
||||
1. После успешного прохождения CI, CD-система автоматически развертывает приложение на тестовых или production-серверах.
|
||||
2. Процесс может включать дополнительные этапы, такие как нагрузочное тестирование, проверка безопасности и т.д.
|
||||
|
||||
## Преимущества CI/CD:
|
||||
1. **Ускорение выпуска обновлений:** Автоматизация позволяет быстрее доставлять новые функции пользователям.
|
||||
2. **Снижение рисков:** Раннее обнаружение ошибок и автоматическое тестирование уменьшают вероятность сбоев.
|
||||
3. **Улучшение качества кода:** Постоянное тестирование и интеграция поддерживают стабильность продукта.
|
||||
4. **Упрощение collaboration:** Разработчики могут работать параллельно, не боясь конфликтов.
|
||||
|
||||
## Популярные инструменты CI/CD:
|
||||
**Jenkins:** Один из самых популярных инструментов с открытым исходным кодом.
|
||||
**GitLab CI/CD:** Встроенная система CI/CD в GitLab.
|
||||
**GitHub Actions:** Интеграция CI/CD прямо в GitHub.
|
||||
**CircleCI:** Облачная платформа для CI/CD.
|
||||
**Travis CI:** Еще одна облачная платформа, популярная для open-source проектов.
|
||||
**Azure DevOps:** Комплексное решение от Microsoft.
|
||||
|
||||
## Пример CI/CD pipeline:
|
||||
1. Разработчик делает изменения в коде и отправляет их в Git.
|
||||
2. CI-система запускает сборку и тесты.
|
||||
3. Если тесты проходят успешно, код автоматически развертывается на staging-сервере.
|
||||
4. После ручного или автоматического подтверждения код развертывается в production.
|
||||
|
||||
**CI/CD** — это ключевая часть современной DevOps-культуры, которая помогает командам быть более эффективными и гибкими.
|
||||
Reference in New Issue
Block a user