ch
Feedback
Ghostly Frontend

Ghostly Frontend

前往频道在 Telegram

Погружаемся в мир Frontend: задачи, фишки, библиотеки и террабайты полезного материала. Сотрудничество: @heywan_n1 Цены: @heywan_media

显示更多
2 415
订阅者
-124 小时
-87
-4130
帖子存档
ИИ уже умеет написать тысячи строк кода за вечер. Вопрос теперь не в том, умеете ли вы пользоваться нейросетью, а понимаете л
ИИ уже умеет написать тысячи строк кода за вечер. Вопрос теперь не в том, умеете ли вы пользоваться нейросетью, а понимаете ли вы, что именно она делает с вашим проектом. «ИИнтеллигенция» - канал для тех, кто хочет разбираться в ИИ глубже обычного пользователя. Здесь выходят: — полезные open-source-инструменты с исходниками; — разборы ИИ-агентов и автоматизации разработки; — локальные модели и self-hosted-сервисы; — реальные инциденты, уязвимости и проблемы AI-кода. Из поста понятно не только что вышло, но и зачем это вам, как запустить и где искать подвох. Читайте «ИИнтеллигенцию» → @clucai

⚙️ БЭМ + Tailwind: прагматичный гибрид для современного фронтенда Показываю, как из двух спорных CSS-подходов собрать что-то
⚙️ БЭМ + Tailwind: прагматичный гибрид для современного фронтенда Показываю, как из двух спорных CSS-подходов собрать что-то вменяемое. Меньше боли с классами, меньше хаоса в стилях, больше скорости. Без фанатизма — только то, что реально работает. ➡️ Читать статью 🧡 Ghostly Frontend | #статьи

Страх. Гнев. Стыд. Вина. Тревога. Апатия. Уныние. Изоляция. Бессилие. Контакт. Тепло. Чувство. Живость. Ясность. Точность. Пр
Страх. Гнев. Стыд. Вина. Тревога. Апатия. Уныние. Изоляция. Бессилие. Контакт. Тепло. Чувство. Живость. Ясность. Точность. Присутствие. Тишина. Покой. Если выбор сделан, твоё место здесь: мэверик Входи осторожно. Кислород зашкаливает.

👩‍💻 Устаревшие техники CCS, от которых уже можно отказаться Выходящие обновления часто упрощают и оптимизируют работу, одна
👩‍💻 Устаревшие техники CCS, от которых уже можно отказаться Выходящие обновления часто упрощают и оптимизируют работу, однако, не все успевают следить за нововведениями. Именно для таких кодеров автор статьи собрал устаревшие техники и переписал их на современный лад. ➡️ Читать статью 🧡 Ghostly Frontend | #статьи

3D-слайдер из двух кубов Реализован с помощью jQuery ➡️ Ссылка на код 🧡 Ghostly Frontend | #codepen

Совет на 2027 год — перекатывайтесь в системную аналитику. Системные аналитики остаются одними из самых дефицитных специалистов в IT. Они проектируют интеграции, работают с API и требованиями, а зарплаты мидлов начинаются от 200 000 ₽. А чтобы освоить профессию всего за 3 месяца и получить первый оффер — изучите канал Насти Глазовой. Её бэкграунд: 5 лет в IT, путь от джуна до лида аналитики, опыт работы в Wildberries, Самокате и Ralf Ringer, а также более 150 выпускников со средней зарплатой от 177 000 ₽. На канале вы найдёте: — Всё, что нужно системному аналитику: UML, BPMN, SQL, REST API, интеграции и работа с требованиями. — Советы по резюме, которые помогают выделяться среди сотен кандидатов. — Практические материалы по трудоустройству: от подготовки к интервью до выхода на первый оффер. Помимо обучения, Настя помогает подготовить сильное резюме, пройти пробные собеседования с HR и получить рекомендации в компании-партнёры. Переходи в закрепленное сообщение в канале: @nastyacareera

Даже индусам уже найдена замена в виде котиков 🧡 Ghostly Frontend | #мем

👩‍💻 Фишка: Array.reduce() — универсальный метод для свёртки массива Этот метод последовательно обрабатывает каждый элемент массива, накапливая единый результат — число, строку, объект или даже новый массив. Мощный инструмент для трансформации данных.
// Суммирование чисел
const numbers = [10, 20, 30, 40];
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // → 100

// Преобразование массива в объект
const users = [
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" },
  { id: 3, name: "Charlie" }
];

const usersById = users.reduce((acc, user) => {
  acc[user.id] = user.name;
  return acc;
}, {});

console.log(usersById);
// → { 1: "Alice", 2: "Bob", 3: "Charlie" }

// Группировка элементов по условию
const fruits = ["apple", "banana", "apple", "orange", "banana", "apple"];

const fruitCount = fruits.reduce((acc, fruit) => {
  acc[fruit] = (acc[fruit] || 0) + 1;
  return acc;
}, {});

console.log(fruitCount);
// → { apple: 3, banana: 2, orange: 1 }

// Функциональная обработка: фильтрация + трансформация за один проход
const products = [
  { name: "Laptop", price: 1000, inStock: true },
  { name: "Mouse", price: 25, inStock: false },
  { name: "Keyboard", price: 80, inStock: true }
];

const availableProductNames = products.reduce((acc, product) => {
  if (product.inStock) {
    acc.push({ name: product.name, price: product.price });
  }
  return acc;
}, []);

console.log(availableProductNames);
// → [{ name: "Laptop", price: 1000 }, { name: "Keyboard", price: 80 }]
📌 Преимущества: — Универсальность: заменяет map(), filter(), find() в сложных сценариях — Мощное агрегирование: превращает массив во что угодно (объект, Map, число, строку) — Один проход: фильтрация и трансформация за один обход массива — Функциональный стиль: чистая функция без побочных эффектов — Контроль аккумулятора: полная гибкость над накоплением результата 🧡 Ghostly Frontend | #фишки

👩‍💻 Smashing Magazine - один из самых авторитетных ресурсов по веб-дизайну и разработке Глубокие, практически полезные стат
👩‍💻 Smashing Magazine - один из самых авторитетных ресурсов по веб-дизайну и разработке Глубокие, практически полезные статьи о CSS (например, @scope), JavaScript API (Temporal), производительности и архитектуре. Продвинутый уровень, must-read для профессионалов. Ссылка на ресурс 🧡 Ghostly Frontend | #ресурсы

⚡️ Писать код руками больше не нужно! Привет. Меня зовут Кирилл. Я создаю топовые подборки с уроками по AI и вайбкодингу: — 6
⚡️ Писать код руками больше не нужно! Привет. Меня зовут Кирилл. Я создаю топовые подборки с уроками по AI и вайбкодингу: — 60+ промптов для дебага: поиск ошибок, оптимизация кода — 40 бесплатных курсов по вайбкодингу — 150 гайдов, как использовать ChatGPT, Claude Code, Antigravity, Cursor, Perplexity, Lovable — 100 готовых модулей: авторизация, админки, логирование, тесты, i18n — 37 MCP серверов: дизайн, разработка, Тесты/QA, деплой Всего 10 минут в день на канале и ты научишься вайб-кодить проекты любой сложности. Материалы в закрепе, постоянно пополняются👆🏻

Сборник из десятка кнопок Button Collection — сборник кнопок с самыми разнообразными эффектами, созданы на CSS. ➡️ Ссылка на код 🧡 Ghostly Frontend | #codepen

🥲 🧡 Ghostly Frontend | #мем

В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них ран
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда? Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России 📆 в канале размещаются как онлайн, так и оффлайн мероприятия; 👩‍💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие; 🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах: 🚀 IT-мероприятия Россииподписывайся и будь в курсе всех предстоящих мероприятий!

👩‍💻 Фишка: Оператор расширения spread — копирование и объединение данных Оператор расширения (spread) позволяет «развернуть» элементы массива или свойства объекта в другом месте, упрощая копирование, объединение и преобразование структур данных.
// Копирование массива
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
console.log(copiedArray); // → [1, 2, 3]

// Объединение массивов
const arr1 = [1, 2];
const arr2 = [3, 4];
const mergedArray = [...arr1, ...arr2];
console.log(mergedArray); // → [1, 2, 3, 4]

// Копирование объекта
const user = { name: "Alice", age: 30 };
const userCopy = { ...user };
console.log(userCopy); // → { name: "Alice", age: 30 }

// Объединение и переопределение свойств
const userWithCity = { ...user, city: "Berlin" };
console.log(userWithCity); // → { name: "Alice", age: 30, city: "Berlin" }

const updatedUser = { ...user, age: 31 };
console.log(updatedUser); // → { name: "Alice", age: 31 }

// Функциональное преобразование (добавление элемента без мутации)
const addNewSkill = (user, newSkill) => ({
  ...user,
  skills: [...(user.skills || []), newSkill]
});

const userWithSkills = addNewSkill({ name: "Alice" }, "JavaScript");
console.log(userWithSkills); // → { name: "Alice", skills: ["JavaScript"] }
📌 Преимущества: — Иммутабельность: создаёт новые массивы/объекты вместо изменения исходных — Краткость: заменяет методы concat(), Object.assign() и ручное копирование — Удобство в React/Vue: идеален для обновления состояния без мутаций — Читаемость: интуитивно понятный синтаксис 🧡 Ghostly Frontend | #фишки

Хотите стать frontend разработчиком или выйти на новый уровень в карьере? Frontend Alliance — канал и сообщество о frontend-разработке, собеседованиях, карьерном росте и системном развитии в IT. Автор канала — Андрей Автушенко, Senior/TechLead с 9+ годами коммерческого опыта во фронтенде. Андрей занимается архитектурой, техническим развитием продуктов, менторством разработчиков и развитием собственной программы обучения, через которую уже проходят более 250 студентов. В канале Андрей делится тем, что действительно помогает расти в профессии: — разборы frontend-собеседований и типичных ошибок кандидатов; — материалы по JavaScript, TypeScript, React/Vue и архитектуре; — советы по росту от junior до middle/senior; — посты про System Design; — карьерные рекомендации, основанные на реальном опыте и работе с большим количеством студентов; — честный взгляд на разработку, рынок и развитие в профессии. Если хотите не просто учить технологии, а реально расти как frontend-разработчик — подписывайтесь на Frontend Alliance 👉 https://t.me/+k2_CDHQ3nv8yZjU6

⚙️ Работа с формами в JavaScript — управление вводом и валидацией данных на клиенте Формы — важная часть любого frontend-прил
⚙️ Работа с формами в JavaScript — управление вводом и валидацией данных на клиенте Формы — важная часть любого frontend-приложения. JavaScript позволяет получать доступ к значениям полей, проверять их, реагировать на события и отправлять данные без перезагрузки страницы.
📦 Полезно для создания интерактивных UI: регистраций, авторизации, поиска, обратной связи и др
⚙️ Пример кода
<form id="contact-form">
  <input type="text" name="name" placeholder="Ваше имя" required />
  <input type="email" name="email" placeholder="Email" required />
  <button type="submit">Отправить</button>
</form>


const form = document.getElementById("contact-form");

form.addEventListener("submit", (event) => {
  event.preventDefault(); // Предотвращаем перезагрузку
  const formData = new FormData(form);
  
  const name = formData.get("name");
  const email = formData.get("email");

  if (!name.trim() || !email.includes("@")) {
    alert("Пожалуйста, введите корректные данные.");
    return;
  }

  console.log("Имя:", name);
  console.log("Email:", email);

  // Здесь можно отправить данные на сервер через fetch/AJAX
});
💬 Как это работает: 1. addEventListener("submit") перехватывает отправку формы. 2. event.preventDefault() отключает стандартное поведение браузера. 3. FormData(form) позволяет легко получить значения полей. 4. Простая валидация может быть реализована вручную до отправки. 📝 Для сложной валидации лучше использовать HTML5-валидацию, регулярные выражения или специализированные библиотеки (например, Yup в связке с React Hook Form).
🗣️ Управление формами — базовый, но очень важный навык frontend-разработчика. Особенно критичен для UX, а также защиты от ошибок ввода и невалидных данных
🧡 Ghostly Frontend | #гайды