👁‍🗨 CODORUM — пишу на JavaScript
803 subscribers
146 photos
83 videos
229 links
🟣 Канал создан с целью совместного обучения программированию на языке JavaScript 🟨

✔️ Канал подойдёт для тех кто желает:
научиться программировать на языке JavaScript
расширить свой кругозор в знаниях функций на JS

🎥 Ютуб канал: youtube.com/@codorum
Download Telegram
Опубликовал шестую часть по разработке сайта-визитки на ReactJS на ютуб каналенаписание блока услуг 👈 жми, чтобы посмотреть 🔴

Разобрали 2 нюанса: как компенсировать margin отступы для конкретного блока, заданные в глобальном классе body, как создать плашки для тегов/текста, ширина которых регулируется шириной текста 🟦

Буду благодарен, если поддержите видео лайком 👍
🔥4👍1👏1
Загрузил седьмую часть по разработке сайта-визитки на ReactJS на ютуб каналнаписание блока портфолио 👈 жми, чтобы посмотреть 🔴

👁‍🗨 Основное, что мы рассмотрели в этой части:
как создать беспрерывно движущуюся карусель из изображений
как создать фильтр с категориями, который регулирует отображение разных компонентов в блоке
открытие изображений на весь экран (подобно модальному окну)
как создать кнопку расширяющую блок (добавляет ряды работ из портфолио)

Буду благодарен, если поддержите видео лайком 👍
🔥6👍1🤝1
Классы в JavaScript могут быть определены в стандартном виде и в расширенном виде. Класс с расширением – это класс, который при объявлении наследует какой-то другой класс с помощью ключевого слова extends 👯‍♀️

Можно наследовать как какой-то встроенный тип класса, так и конкретный объявленный класс 🤝

👉 На скрине продемонстрировано:
наследование стандартного класса Array классом MyArray, вследствие чего класс MyArray может иметь перечесть элементов
наследование кастомного класса Animal классом Dog. Теперь класс Dog также имеет конструктор со свойством объекта "this.name", как класс Animal

Код со скрина:
// Наследование типа класса (типы встроенных классов: Array, Date, String...)

class MyArray extends Array {
constructor(...elements) {
super(...elements);
}

getFirst() {
return this[0];
}
}



// Наследование конкретного класса созданного нами

class Animal {
constructor(name) {
this.name = name;
}
}

class Dog extends Animal {}
👍3🔥2
Восьмая часть по разработке сайта-визитки на ReactJS уже на ютуб каналенаписание блока отзывов 👈 жми, чтобы посмотреть 🔴

В ней мы создали слайдер-карусель отзывов с функциями перелистывания без использования дополнительных библиотек и т. п. Разобрали создание иллюзии бесконечности слайдера, написали компонент шаблон для карточки отзыва принимающий пропсы с данными для отзыва с главного компонента Main. Использовали хуки useEffect и useRef ⚛️

Буду благодарен, если поддержите видео лайком 👍
🔥5👍1
Опубликовал девятую часть по разработке сайта-визитки на ReactJS на ютуб каналенаписание блока гарантий и подвала 👈 жми, чтобы посмотреть 🔴

В этой части кратко разобрали как создать список используя html теги "ol" и "li" и добавить к пунктам списка собственные иконки изображения в качестве маркеров вместо стандартной нумерации. Также стилизовали сам список и написали футер блок 🟦

Буду благодарен, если поддержите видео лайком 👍
🔥4👍1
В CSS есть удобная функция clamp, которая ограничивает значение между минимальным и максимальным значениями. Её можно использовать вместо привычных свойств min-width, width и max-width например 🙌

В случае с классом container со скрина функция устанавливает значение ширины и высоты для элемента в диапазоне от 200px до 600px по ширине и от 100px до 300px по высоте, где 400px по ширине и 200px по высоте являются желаемыми значениями, но они могут адаптироваться в пределах этих минимальных и максимальных значений ⭕️

Код со скрина:
.container {
width: clamp(200px, 400px, 600px);
height: clamp(100px, 200px, 300px);
}
🔥3👍1
Загрузил десятую часть по разработке сайта-визитки на ReactJS на ютуб каналнастройка навигации по странице 👈 жми, чтобы посмотреть 🔴

В которой мы доработали header блок, настроили навигацию по странице: теперь по нажатию на разделы в меню нас плавно переносит к частям страницы, где расположены эти разделы. Также добавили кнопку в нижнем правом углу экрана, которая появляется в конце страницы и по нажатию переносит нас в начало страницы 🟧

Буду благодарен, если поддержите видео лайком 👍
🔥4
С помощью метода findLast можно найти последний элемент массива удовлетворяющий определенное условие в JavaScript 🟨

Для этого достаточно задать массив, прописать метод findLast, в скобках которого указать условие для элемента 🔦

Отталкиваясь от этого условия будут поочередно перебираться все элементы с конца массива, пока не будет найден первый с конца массива элемент удовлетворяющий заданное условие 🔬

Когда такой элемент будет найден – он будет выведен в консоль, в случае кода на скрине, и поиск будет остановлен 👁‍🗨

Код со скрина:
const numbers = [1, 2, 3, 4, 5];

const lastNum = numbers.findLast(num => num % 2 === 0);

console.log("Последний парный элемент массива numbers:", lastNum);
👍5
11 часть по разработке сайта-визитки на ReactJS уже на ютуб каналесоздание функции смены темы 👈 жми, чтобы посмотреть 🔴

В ней мы написали функцию смены темы в отдельном Реакт компоненте, которая регулирует тему страницы. Такой компонент похож на кастомный хук, который импортируется в разные компоненты для добавления какого-то функционала, в нашем случае - для манипулирования значением темы для смены применяемой CSS коллекции (светлой/тёмной) ⚛️

Буду благодарен, если поддержите видео лайком 👍
🔥4👍1
Опубликовал 12 часть по разработке сайта-визитки на ReactJS на ютуб каналеадаптация header блока 👈 жми, чтобы посмотреть 🔴

В этой части мы приступили к адаптации страницы под мобильные устройства 🟧

👁‍🗨 Рассмотрели как можно выполнять адаптацию без лишней монотонной работы, используя лишь:
функцию по определению ширины и высоты устройства, с которого открыт сайт, с хуком useEffect
одну переменную с хуком useState
тернарные выражения

Буду благодарен, если поддержите видео лайком 👍
2👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаем рубрику разборов возможных вопросов из собеседований по JavaScript 🟨

👉 Что означает глубокая (deep) и поверхностная (shallow) копия объекта?

Поверхностная копия (shallow copy) создает новый объект и копирует в него лишь ссылки на вложенные объекты из оригинального объекта
Глубокая копия (deep copy) создает новый объект с полностью независимыми копиями всех вложенных объектов из оригинального объекта

Глубокая копия нужна, если нужно избежать изменения в исходном объекте при изменениях в её копии. Потому как если вносить изменения во вложенные объекты в shallow копии - изменения применяются и для вложенных объектов внутри оригинального объекта, который был скопирован 👁‍🗨
👍3🔥1
Загрузил 13 часть по разработке сайта-визитки на ReactJS на ютуб каналнаписание бургер меню 👈 жми, чтобы посмотреть 🔴

В которой мы создали бургер меню для мобильной версии. Отошли от концепции стандартного бургер меню, закрывающего 90% экрана по ширине при открытии и вместо этого создали удобное аккуратное выпадающее бургер-меню ⚛️

Буду благодарен, если поддержите видео лайком 👍
🔥2👍1
14 часть по разработке сайта-визитки на ReactJS уже на ютуб каналеадаптация приветственного блока 👈 жми, чтобы посмотреть 🔴

В ней мы адаптировали 2-й блок под моб. устройства, благодаря тернарному выражению и переменной isPortrait. Создали 2 варианта html-архитектуры (web & mobile) для блока, как делали ранее для header блока. В зависимости от переменной isPortrait отображаем тот или иной вариант html-архитектуры (про неё подробнее в 12 части) 📱

Буду благодарен, если поддержите видео лайком 👍
🔥2👍1👏1
Благодаря простенькому методу length можно узнать количество элементов в интересующем нас массиве в JavaScript 🟨

Для этого можно объявить новую переменную, указав через знак равно название массива, количество элементов которого мы хотим узнать и метод length 📐

Ну и вывести эту новую переменную, отображающую количество элементов в массиве, в консоль 👁‍🗨

Код со скрина:
const persons = ['Pinkman', 'Fring', 'Eladio'];

const length = persons.length;

console.log(`Количество элементов в массиве persons:`, length);
👍3🔥2😁1
Опубликовал 15 часть по разработке сайта-визитки на ReactJS на ютуб каналадаптация модального окна 👈 жми, чтобы посмотреть 🔴

В этой части мы перенесли функцию по определению соотношения ширины и высоты экрана устройства пользователей посещающих наш сайт, и определение переменной isPortrait в отдельный компонент (теперь можем подключать этот компонент с функцией ресайза в компоненты, где нужна адаптация под моб. устройства подобно кастомному хуку). И адаптировали модальное окно ⚛️

Буду благодарен, если поддержите видео лайком 👍
🔥3👍2
Загрузил 16 часть по разработке сайта-визитки на ReactJS на ютуб каналадаптация блока услуг 👈 жми, чтобы посмотреть 🔴

В которой мы адаптировали 3 блок для мобильных устройств. Разобрали применение разных комбинаций классов для html элементов отталкиваясь от значений нескольких переменных, благодаря использованию конструкции со знаком доллара, ну и еще пару неочевидных моментов CSS стилизации 🟦

Буду благодарен, если поддержите видео лайком 👍
🔥2❤‍🔥1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Как сделать отступы между элементами div контейнера компактно? 🔳

Вместо привычного CSS свойства для отступа margin можно использовать лишь одно свойство gap, которое задаст одинаковый отступ со всех сторон элемента и тем самым сэкономит много места 🟦

Единственное, свойство gap лучше задавать в классе контейнера с элементами, а не в самих классах элементов, при условии, что у самого класса контейнера нет свойств размера, тем самым размер контейнера будет регулироваться элементами (пример на гифке) 👁‍🗨
👍4😁2
17 часть по разработке сайта-визитки на ReactJS уже на ютуб каналадаптация блока портфолио 👈 жми, чтобы посмотреть 🔴

В ней мы настроили отображение 4-го блока для мобильных устройств, при этом сохранив основные функции без необходимости их редактирования. Адаптировали блок в главном компоненте Main и компоненты имеющие отношение к блоку. Немного изменили идею стилизации и отображения элементов блока и компонентов для мобильных устройств 📱

Буду благодарен, если поддержите видео лайком 👍
👍2🔥1
Опубликовал 18 часть по разработке сайта-визитки на ReactJS на ютуб каналeадаптация блока отзывов 👈 жми, чтобы посмотреть 🔴

В этой части мы адаптировали 5-й блок под мобильные устройства. Прописали дополнительные классы для элементов блока моб. версии и подкорректировать шаблон отзывов, изменили концепцию контейнера с отзывами. Показал лайфхак для плашек (выделения слов в тексте) - как сделать плашки неразрывными/неуязвимыми для переносов текста 🟧

Буду благодарен, если поддержите видео лайком 👍
👍4🔥2
Рассмотрим тип объекта Date в JavaScript ⚜️

Date – это тип объекта, который позволяет создавать, представлять и взаимодействовать с датами и временем (год, месяц, день, час, минута и другие)

Существуют методы для получения и изменения даты и времени (детальнее на скрине) ⏲️

Стоит учесть, что отсчет месяцев начинается с нуля, где январь - 00, февраль - 01 и так далее 👁‍🗨

Код со скрина:
const TimeNow = new Date();

// методы для получения компонентов времени объекта TimeNow
let year = TimeNow.getFullYear();
let month = TimeNow.getMonth();
let day = TimeNow.getDate();
let hours = TimeNow.getHours();
let min = TimeNow.getMinutes();
let sec = TimeNow.getSeconds();

console.log(`Сегодня ${day}.${month + 1}, ${year} год`);


// пример метода по установке времени для объекта TimeNow (час, минута)
TimeNow.setHours(14, 30);
👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
У нас новый диктор! 🎙

Просим сравнить качество звука и подачу предыдущего диктора и нового диктора в следующем посте 👇
🔥3