Frontend.school() | изучаем HTML, CSS, JavaScript вместе!
1.21K subscribers
550 photos
66 videos
3 files
252 links
Крутым фронтендером не рождаются — им становятся на канале @frontend_school!

Наш чат: @frontend_school_chat
Наша флудилка: @frontend_school_flud

Другие проекты: t.me/addlist/dIq-3zEMMugwZTgy

Мы в VK: vk.com/frontend_school

Связь: @jellyjail
Download Telegram
Что такое делегирование событий в JS и как это работает

Это техника, которая позволяет обрабатывать события на родительских элементах вместо на дочерних.

Мы знаем, что события всплывают вверх по DOM-дереву. То есть если вы установите обработчик события на родительском элементе, он будет вызван при срабатывании и на любом дочернем.

Вот пример, как можно это использовать:
// Получаем родительский элемент
const parentElement = document.getElementById('parentElement');
// Добавляем обработчик на родительский элемент
parentElement.addEventListener('click', function(event) {
// Проверяем, что кликнули на нужный дочерний элемент
if(event.target.classList.contains('childElement')) {
// Обрабатываем событие
console.log('Событие обработано на дочернем элементе');
}
});


Тут мы устанавливаем обработчик на родительский элемент и проверяем, что событие произошло именно на дочернем элементе.

#javascript #урок

Учитесь фронтенду с нами — подпишитесь 💻
Метод bind() в JavaScript

Простыми словами, bind — это инструмент, который позволяет «привязать» определённый контекст (this) к функции.

Давайте разберёмся на примере. Представьте, что у вас есть объект user:

const user = {
name: 'Аня',
greet() {
console.log(`Привет, меня зовут ${this.name}`);
}
};


Если мы вызовем user.greet(), то увидим: «Привет, меня зовут Аня». Всё работает, потому что контекст (this) указывает на объект user.

Но что, если мы захотим передать эту функцию в другое место? Например:

const greetFunc = user.greet;
greetFunc(); // Что произойдет?


В этом случае контекст потеряется, и this будет указывать не на user, а на глобальный объект (или undefined в строгом режиме). Метод bind поможет нам решить эту проблему:

const greetFuncBound = user.greet.bind(user);
greetFuncBound(); // Привет, меня зовут Аня


Теперь функция greetFuncBound всегда будет знать, что её контекст — это объект user.

#урок #javascript
Что такое WeakMap и WeakSet

WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. Особенность WeakMap: если объект, использованный как ключ, больше нигде не упоминается, он автоматически удаляется.

WeakSet — это коллекция, хранящая только уникальные объекты. Как и в WeakMap, если объект больше не используется, он может быть удалён автоматически.

Примеры использования:
let wm = new WeakMap();
let obj = {};

wm.set(obj, 'значение');
console.log(wm.get(obj)); // 'значение'

obj = null; // Объект становится недоступен и может быть удалён
Что такое WeakMap и WeakSet

WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. ОсобенноЧто такое Wподходит для привязки данных к объекту с автоматической очисткой, например, для кеша DOM-элементов. WeakSet полезен для хранения множества объектов с автоматической очисткой.

#урок #javascript

Учитесь фронтенду с нами — подпишитесь 💻
Сегодня поговорим о загадочном свойстве __proto__. Что это такое и почему это важно для JavaScript?

Всё дело в прототипах. В JavaScript каждый объект может «наследовать» свойства и методы другого объекта. Этот «наследник» называется прототипом. Свойство __proto__ указывает на объект, который является прототипом данного объекта.

Например:
const animal = {
eats: true
};

const rabbit = {
jumps: true,
__proto__: animal
};


Теперь у объекта rabbit есть доступ к свойству eats через прототип animal. Это позволяет экономить память и добиваться мощной функциональности с минимальными усилиями. Знание прототипов и __proto__ поможет вам писать более эффективный и выразительный код.

#урок #javascript

Учитесь фронтенду с нами — подпишитесь 💻
Что такое JSON.stringify()

Это метод в JavaScript, который позволяет превратить объект или массив в строку формата JSON (JavaScript Object Notation). Это бывает полезно, например, когда нужно передать данные по сети или сохранить их в локальное хранилище.

Пример:const user = {
name: «Alice»,
age: 25,
isStudent: true
};

const jsonString = JSON.stringify(user);
console.log(jsonString); // {"name»:"Alice»,"age»:25,"isStudent»:true}

Как видите, объект превратился в строку, которую легко передавать и сохранять. Затем её можно обратно превратить в объект с помощью JSON.parse.

Понимание работы поможет вам эффективно работать с данными на стороне клиента и сервера.

#урок #javascript #json

Учитесь фронтенду с нами — подпишитесь 💻
Как работает атрибут `autocomplete` в HTML и зачем он нужен

autocomplete — это атрибут, который можно применять к элементам форм, таким как <input> или <form>. Он помогает браузеру предлагать пользователю автозаполнение полей формы на основе ранее введённых данных.

Пример:
<form>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" autocomplete="name">

<label for="email">Эл. почта:</label>
<input type="email» id="email» name="email" autocomplete="email">

<input type="submit» value="Отправить">
</form>

В этом примере браузер сможет предложить варианты для полей "Имя" и "Эл. почта" на основе данных, которые пользователь вводил ранее.

Значение autocomplete может быть как on (включено), так и off (выключено), а также иметь более конкретные значения, как в примере выше — name, email.

Этот атрибут повышает удобство пользователей, сокращая время на заполнение данных и минимизируя ошибки ввода.

#урок #html

Учитесь фронтенду с нами — подпишитесь 💻
Что делает директива "use strict" в JavaScript

"use strict" — это способ включить строгий режим в коде JavaScript. Он помогает сделать ваш код более безопасным и чистым, выявляя ошибки, которые в обычном режиме могли бы быть незаметны.

Пример:
"use strict";

var x = 1;
delete x; // Ошибка: нельзя удалить объявленную переменную

function test() {
y = 2; // Ошибка: "y" не объявлена
}
test();


Без строгого режима такие ошибки могли бы остаться незамеченными и привести к неожиданным проблемам в коде.

Как включить строгий режим:
— в начале файла: "use strict";
— в пределах функции: function myFunction() { "use strict"; /* код */ }

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

#урок #javascript

Учитесь фронтенду с нами — подпишитесь 💻
Сегодня поговорим о спред-операторе (...) в JavaScript

Спред-оператор позволяет «разложить» массив или объект на отдельные элементы. Он используется в разных контекстах: при копировании, объединении массивов и объектов, а также при передаче аргументов в функции.

Примеры:

Копирование массива:

const originalArray = [1, 2, 3];
const copyArray = [...originalArray];
console.log(copyArray); // [1, 2, 3]


Объединение массивов:

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const combinedArray = [...array1, ...array2];
console.log(combinedArray); // [1, 2, 3, 4, 5, 6]


Копирование объекта:

const originalObject = { a: 1, b: 2 };
const copyObject = { ...originalObject };
console.log(copyObject); // { a: 1, b: 2 }


Объединение объектов:

const object1 = { a: 1, b: 2 };
const object2 = { c: 3, d: 4 };
const combinedObject = { ...object1, ...object2 };
console.log(combinedObject); // { a: 1, b: 2, c: 3, d: 4 }


Преимущества:
— упрощает операции с массивами и объектами;
— делает код более читабельным;
— помогает избежать мутаций и побочных эффектов.

Теперь, когда вы знаете, как использовать спред-оператор, ваш код станет ещё более элегантным и эффективным!

#урок #javascript

Учитесь фронтенду с нами — подпишитесь 💻
Любите ARIA? Нет, Кипелов тут не причем

ARIA (Accessible Rich Internet Applications) — это набор атрибутов, разработанный для того, чтобы улучшить доступность веб-приложений для людей с ограниченными возможностями. Он помогает разработчикам создавать интерфейсы, которые могут быть более легко интерпретированы вспомогательными технологиями, такими как экранные читалки. Это особенно важно для людей с ограниченным зрением или моторикой.

Основные атрибуты ARIA:

1. aria-label: используется для предоставления текста этикетки для элемента.

<button aria-label="Закрыть">X</button>


2. aria-hidden: указывает, что элемент и его дочерние элементы недоступны для вспомогательных технологий.

<div aria-hidden="true">Этот текст будет игнорироваться.</div>


3. aria-live: сообщает экранному чтецу об изменениях в содержимом, которые происходят динамически.

<div aria-live="polite">Контент будет прочитан экранным чтецом при изменении.</div>


4. aria-expanded: указывает состояние раскрытия или сворачивания элементов интерфейса (например, аккордеоны, выпадающие списки).

<button aria-expanded="false">Меню</button>


5. role: Определяет роль элемента интерфейса, помогая вспомогательным технологиям понять его назначение.

<div role="alert">Это важное сообщение!</div>


Преимущества использования ARIA:
— лучшая доступность: делает ваше приложение доступным для большего круга пользователей;
— социальная ответственность: помогает соблюдать стандарты доступности и поддерживать инклюзивность;
— улучшение SEO: иногда улучшает видимость вашего контента для поисковых систем.

Использование ARIA атрибутов поможет вам создать более доступные и понятные веб-приложения для всех пользователей.

Почитать подробнее можно в этой статье: https://doka.guide/a11y/aria-intro/

#урок #html

Учитесь фронтенду с нами — подпишитесь 💻