Навыки modern-javascript-patterns
📦

modern-javascript-patterns

Безопасно

Современные паттерны JavaScript

Также доступно от: wshobson

Пишите более чистый и поддерживаемый код JavaScript, используя возможности ES6+: async/await, деструктуризацию, spread-операторы и паттерны функционального программирования.

Поддерживает: Claude Codex Code(CC)
⚠️ 68 Плохо
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «modern-javascript-patterns». Convert this callback to async/await: function getData(id, callback) { fetch('/api/' + id) .then(res => res.json()) .then(data => callback(null, data)) .catch(err => callback(err)); }

Ожидаемый результат:

Refactored async/await version:

async function getData(id) {
try {
const res = await fetch(`/api/${id}`);
const data = await res.json();
return data;
} catch (err) {
throw err;
}
}

Преимущества:
- Более чистый код, выглядящий синхронно
- Лучшая обработка ошибок с try/catch
- Проще отлаживать и поддерживать

Использование «modern-javascript-patterns». Apply destructuring to this code: const user = { name: 'John', age: 30, address: { city: 'NYC' } }; const name = user.name; const city = user.address.city;

Ожидаемый результат:

Refactored with destructuring:

const user = { name: 'John', age: 30, address: { city: 'NYC' } };
const { name, address: { city } } = user;

Или с переименованием:
const { name: userName, address: { city: userCity } } = user;

Аудит безопасности

Безопасно
v1 • 2/25/2026

All 89 static findings are FALSE POSITIVES. The scanner misinterprets JavaScript code examples in markdown documentation as security risks. Backticks in code blocks are not shell commands. References to fetch() and dynamic import() are legitimate ES6+ patterns being taught. This is a safe educational skill about modern JavaScript patterns.

2
Просканировано файлов
949
Проанализировано строк
5
находки
1
Всего аудитов

Проблемы высокого риска (1)

Weak Cryptographic Algorithm Detection (FALSE POSITIVE)
Scanner detected 'weak cryptographic algorithm' at lines 78, 80, 92, 101, 114, 118, 880. This is a FALSE POSITIVE - the scanner misinterprets JavaScript code examples (destructuring, toLowerCase(), spread operators) as cryptographic code. This is educational documentation about JavaScript syntax patterns.
Проблемы среднего риска (2)
External Command Detection (FALSE POSITIVE)
Scanner detected 'Ruby/shell backtick execution' at 61 locations. This is a FALSE POSITIVE - the scanner detects backticks (`) in markdown code blocks. These are JavaScript code examples in markdown documentation, NOT shell commands.
Dynamic Import Detection (FALSE POSITIVE)
Scanner detected 'Dynamic import() expression' at lines 727, 728, 732. This is a FALSE POSITIVE - dynamic import() is a legitimate ES6+ JavaScript feature for lazy-loading modules. This is a core pattern being taught by this skill.
Проблемы низкого риска (2)
Network Access Detection (FALSE POSITIVE)
Scanner detected 'Fetch API call' and 'Hardcoded URL' at lines 337, 387, 393, 789, 906-910. This is a FALSE POSITIVE - these are code examples showing how to use the Fetch API and links to legitimate educational resources (MDN, JavaScript.info, You Don't Know JS).
System Reconnaissance Detection (FALSE POSITIVE)
Scanner detected 'system reconnaissance' at 6 locations. This is a FALSE POSITIVE - the scanner misinterprets references to async iteration and system-related programming patterns as reconnaissance.
Проверено: claude

Оценка качества

38
Архитектура
100
Сопровождаемость
87
Контент
30
Сообщество
81
Безопасность
91
Соответствие спецификации

Что вы можете построить

Модернизация устаревшего кода

Рефакторинг старого JavaScript-кода с callback-функциями для использования Promises и async/await для улучшения читаемости и обработки ошибок.

Изучение современного JavaScript

Понимание и применение возможностей ES6+: деструктуризация, spread-операторы и модули для написания более выразительного кода.

Улучшение code review

Применение современных паттернов JavaScript во время code review для предложения более чистых и поддерживаемых реализаций.

Попробуйте эти промпты

Конвертация Callback в Async/Await
Конвертируйте эту функцию JavaScript с callback-функцией в синтаксис async/await. Покажите код до и после.

[Вставьте callback-код сюда]
Применение деструктуризации
Рефакторьте этот JavaScript-код для использования деструктуризации объектов и массивов. Сделайте код более лаконичным и читаемым.

[Вставьте код с вложенными свойствами или массивами сюда]
Реализация функционального пайплайна
Преобразуйте этот императивный JavaScript-код для использования функционального программирования с map, filter и reduce. Покажите подход с цепочкой вызовов.

[Вставьте код преобразования на основе циклов сюда]
Ленивая загрузка модуля
Покажите, как реализовать ленивую загрузку с помощью динамического import() для этого функционального модуля. Включите обработку ошибок и логику условной загрузки.

Лучшие практики

  • Используйте const по умолчанию, let только когда нужна переназначение
  • Предпочитайте стрелочные функции для callback-функций, чтобы избежать проблем с this binding
  • Используйте async/await вместо цепочек Promises для лучшей читаемости

Избегать

  • Использование var вместо const/let - нет блочной области видимости
  • Callback hell с вложенными анонимными функциями
  • Прямая мутация объектов вместо использования неизменяемых паттернов

Часто задаваемые вопросы

В чём разница между let и const?
Используйте const по умолчанию для значений, которые не будут переназначены. Используйте let только тогда, когда нужно переназначить переменную. Избегайте var в современном JavaScript.
Когда использовать async/await вместо Promises?
Используйте async/await для более чистого и читаемого асинхронного кода. Это хорошо работает для последовательных асинхронных операций. Используйте Promise.all для параллельных операций.
Что такое деструктуризация в JavaScript?
Деструктуризация позволяет извлекать значения из массивов или свойства из объектов в отдельные переменные, используя лаконичный синтаксис.
Какие преимущества у стрелочных функций?
Стрелочные функции имеют более короткий синтаксис, лексическую привязку this (наследует this из внешней области видимости) и не могут использоваться как конструкторы.
Для чего используется spread-оператор?
Spread-оператор (...) разворачивает итерируемые объекты (массивы, строки) в отдельные элементы. Используется для конкатенации массивов, клонирования объектов и аргументов функций.
Как динамические импорты помогают производительности?
Динамический import() загружает модули по требованию, обеспечивая разделение кода. Это уменьшает начальный размер бандла и улучшает время загрузки страницы.

Сведения для разработчиков

Автор

sickn33

Лицензия

MIT

Ссылка

main

Структура файлов