Исчерпывающий гайд по всем существующим способам организации наследования в JavaScript. Разберем сильные и слабые стороны каждого подхода и научимся выбирать оптимальный метод для твоих задач.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
addEventListener в JavaScript?addEventListener — это метод, который позволяет добавлять обработчики событий к элементам на странице.// Функция для обработки клика
function handleClick() {
console.log('Кнопка нажата!');
}
// Добавляем обработчик к кнопке
const button = document.querySelector('button');
button.addEventListener('click', handleClick);
🗣️ В этом примере метод addEventListener связывает событие клика с кнопкой, выполняя функцию handleClick. Этот подход позволяет динамически добавлять или удалять обработчики.
Please open Telegram to view this post
VIEW IN TELEGRAM
CSS переменные можно использовать, чтобы сделать цвета темнее, когда они отображаются на светлом фоне, и светлее, когда они отображаются на тёмном, что делает их более яркими в обоих случаях.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Сколько бы раз я ни смотрел RoadMap для начинающих фронтендеров, всегда натыкаюсь на одну проблему: RoadMap, как правило, — просто свалка технологий, которую можно описать одной фразой: "Учи всё, что есть". Но так ли это? Нужно ли учить всё это в самом начале? Давайте отбросим большую схему с технологиями в сторону и поговорим начистоту.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🕹 Игра в дедлайны
Заметил, что работаешь быстрее, когда сроки поджимают? Это не магия — это фокусировка.
👉 Совет: попробуй метод «искусственного дедлайна». Установи себе собственные сроки на задачу, которые короче официальных. Например, если дедлайн через неделю, заверши всё за три дня. Так ты освободишь время на проверку, улучшения или форс-мажоры.
Заметил, что работаешь быстрее, когда сроки поджимают? Это не магия — это фокусировка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Senior Fullstack Developer
Team Lead (Java Spring) - Senior Backend Developer
Product Manager
Please open Telegram to view this post
VIEW IN TELEGRAM
Стилизация React-приложений может быть сложной задачей: существует множество подходов, и выбор подходящего способа влияет на удобство разработки, производительность приложения и легкость управления кодом. Разберем основные методы стилизации, их преимущества и недостатки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте модальное окно, которое открывается при клике на кнопку и закрывается при клике на кнопку закрытия или на фон вокруг модального окна.
Ожидаемое поведение:
• При клике на кнопку "Открыть модальное окно" появляется модальное окно.• Модальное окно закрывается при клике на кнопку "Закрыть" или на затемнённый фон.• Фон страницы не прокручивается, пока открыто модальное окно.Решение задачи
<button id="openModal">Открыть модальное окно</button>
<div id="modal" class="modal">
<div class="modal-content">
<span id="closeModal" class="close-button">×</span>
<p>Это модальное окно</p>
</div>
</div>
body.modal-open {
overflow: hidden;
}
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
justify-content: center;
align-items: center;
}
.modal-content {
background: white;
padding: 20px;
border-radius: 8px;
position: relative;
}
.close-button {
position: absolute;
top: 10px;
right: 15px;
font-size: 24px;
cursor: pointer;
}
const openModalBtn = document.getElementById('openModal');
const closeModalBtn = document.getElementById('closeModal');
const modal = document.getElementById('modal');
const body = document.body;
openModalBtn.addEventListener('click', () => {
modal.style.display = 'flex';
body.classList.add('modal-open');
});
closeModalBtn.addEventListener('click', closeModal);
modal.addEventListener('click', (e) => {
if (e.target === modal) closeModal();
});
function closeModal() {
modal.style.display = 'none';
body.classList.remove('modal-open');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
• OAuth 2.0, OpenID Connect и SSO для самых маленьких
• 250 000 товаров и миллионы характеристик: как мы скрестили Битрикс с Symfony и MongoDB
• JavaScript-фреймворки и библиотеки, на которые стоит обратить внимание в 2025 году
• Onlyoffice и Р7 офис: макросы на Javascript (туториал)
• Призываю переименовать Layers в Feature-Sliced Design методологии
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья анонсирует сборку браузера Chromium — Ultimatum. Браузер обходит техники трекинга, позволяет устанавливать расширения с любых сайтов и перехватывать сетевые запросы для их полной подмены.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте простой список задач, где пользователь может добавлять новые задачи через текстовое поле и удалять существующие задачи по кнопке "Удалить" рядом с каждой из них.
Ожидаемое поведение:
• Пользователь вводит текст задачи в поле и нажимает кнопку "Добавить".• Новая задача добавляется в список с кнопкой "Удалить" рядом с ней.• При нажатии на кнопку "Удалить" задача исчезает из списка.Решение задачи
<div>
<input type="text" id="taskInput" placeholder="Введите задачу" />
<button id="addButton">Добавить</button>
</div>
<ul id="taskList"></ul>
const taskInput = document.getElementById('taskInput');
const addButton = document.getElementById('addButton');
const taskList = document.getElementById('taskList');
addButton.addEventListener('click', () => {
const taskText = taskInput.value.trim();
if (taskText === '') return; // Не добавляем пустые задачи
const listItem = document.createElement('li');
listItem.textContent = taskText;
const deleteButton = document.createElement('button');
deleteButton.textContent = 'Удалить';
deleteButton.style.marginLeft = '10px';
deleteButton.addEventListener('click', () => {
taskList.removeChild(listItem);
});
listItem.appendChild(deleteButton);
taskList.appendChild(listItem);
taskInput.value = ''; // Очищаем поле ввода
});
Please open Telegram to view this post
VIEW IN TELEGRAM
Junior React Developer
Junior React Developer
Web-разработчик (PHP)
Please open Telegram to view this post
VIEW IN TELEGRAM
Intersection Observer в JavaScript и зачем он используется?Intersection Observer — это API, которое позволяет отслеживать, когда элемент появляется или исчезает из области видимости (viewport). Он полезен для ленивой загрузки изображений, бесконечной прокрутки и анимаций при прокрутке.const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Элемент видим:', entry.target);
}
});
});
// Наблюдаемый элемент
const target = document.querySelector('.observe-me');
observer.observe(target);🗣️ В этом примере Intersection Observer отслеживает элемент .observe-me и выполняет код, когда элемент появляется в области видимости. Это позволяет избежать постоянного использования события scroll, улучшая производительность.
Please open Telegram to view this post
VIEW IN TELEGRAM
Frontend-разработчик React / Vue.js / Nuxt.js (Middle-Senior)
Системный аналитик на frontend и mobile в Т-Инвестиции
Frontend-разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья рассказывает о создании раздела с календарем и задачами с использованием библиотеки FullCalendar. Разбираются её возможности, преимущества и опыт интеграции для внутренних проектов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте форму с одним полем ввода для имени и кнопкой "Отправить". При отправке формы выполните следующие условия:
1. Если поле пустое, отобразите сообщение об ошибке под полем.
2. Если поле заполнено, отобразите сообщение "Форма успешно отправлена!".
3. Сообщение об ошибке исчезает при вводе текста.
Решение задачи
<form id="myForm">
<input type="text" id="nameInput" placeholder="Введите имя" />
<button type="submit">Отправить</button>
<p id="error" style="color: red; display: none;">Поле не должно быть пустым</p>
</form>
<p id="success" style="color: green; display: none;">Форма успешно отправлена!</p>
const form = document.getElementById('myForm');
const nameInput = document.getElementById('nameInput');
const error = document.getElementById('error');
const success = document.getElementById('success');
form.addEventListener('submit', (e) => {
e.preventDefault();
if (nameInput.value.trim() === '') {
error.style.display = 'block';
success.style.display = 'none';
} else {
error.style.display = 'none';
success.style.display = 'block';
nameInput.value = '';
}
});
nameInput.addEventListener('input', () => {
if (nameInput.value.trim() !== '') {
error.style.display = 'none';
}
});
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья раскрывает идеи и обсуждения, связанные с развитием сборки Хромиума Ultimatum. Автор стремится понять реальные запросы пользователей и обсудить востребованные функции.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Сцена с интересной реализацией анимированного скролла. Сделана на Svg, CSS и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
Frontend-разработчик React (middle+/senior)
• JavaScript, React, TypeScript, Node.js, CI/CD (GitLab), Unit-тестирование• Уровень дохода не указан | от 3 летFullStack разработчик
• React, TypeScript, JavaScript, HTML, CSS, Node.js, API, Git• Уровень дохода не указан | от 3 летSenior Frontend Developer VUE.js
• JavaScript, Vue.js, TypeScript, адаптивная верстка, дизайн мобильных приложений, Figma, Nuxt.js, веб-разработка• от 3 000 до 4 000 $ | от 5 летPlease open Telegram to view this post
VIEW IN TELEGRAM