Files
huncode 90692f0f16
Build and deploy / deploy (push) Successful in 15s
raise editorial quality gate and revise 2018 spring
2026-07-31 09:20:37 +03:00

7.3 KiB
Raw Permalink Blame History

Черновое ревью — май 2018: legacy jQuery

Статус: принято в публикационный слой 31 июля 2026 после независимого audit. Партия намеренно не перезаписывает web/data/articles.json: web/data/editorial-revisions.mjs накладывает ревизии только по стабильным slug.

Область партии

Slug Главный вопрос Основной текст, знаков
editorial-2018-05-practice-legacy-jquery Как повторно вызвать mount и оставить один обработчик? 7 718
editorial-2018-05-mechanism-legacy-jquery Почему прямой click пропадает после .html()? 8 088
editorial-2018-05-field-legacy-jquery Как держать один активный Ajax-запрос формы? 8 729

Размеры посчитаны без списка источников и HTML-разметки. Каждый текст отвечает на один вопрос, начинает с наблюдаемого сбоя и заканчивается последовательностью действий с ограничениями.

Исследование

Все ссылки — первичная официальная документация jQuery; материалы сверены 31 июля 2026 года.

Статья Источники
Повторный mount .on(), .off()
Замена DOM .html(), .on(), .off(), .data()
Ajax-форма jQuery.ajax(), .serialize(), .prop(), .data(), .removeData(), deferred.always()

Ревью 1 — факты и техника

Пройдено.

  • Для mount проверены: пространства имён событий, снятие обработчиков по namespace, различие прямой и делегированной привязки, а также версия .on()/.off() — jQuery 1.7+.
  • Для .html() проверено основное утверждение: jQuery удаляет данные и события дочерних узлов до замены содержимого. Ограничения делегирования для SVG и не всплывающих событий названы явно. Риск вставки непроверенной HTML-строки не выдан за проблему конкретного API — это предупреждение документации.
  • Для Ajax-формы проверены: состав .serialize(), динамическое свойство disabled через .prop(), хранение и удаление маркера через .data()/.removeData(), роли done, fail и always у jqXHR. always используется только для освобождения UI и не анализирует разнородные аргументы resolve/reject.
  • Серверные последствия не выдуманы: клиентский замок ограничен текущим DOM-экземпляром; при timeout текст не обещает, что операция не была выполнена.

Ревью 2 — редактура и голос

Пройдено.

  • Речь короткая и техническая: симптом → причина → проверка → действие. Нет обещаний «универсального» решения и абстрактных вступлений о важности темы.
  • Голос соответствует 2018 году: код на jQuery, IIFE, var, $.ajax; без искусственного переноса поздних фреймворков или роли техлида в раннюю заметку.
  • У каждой статьи свой сценарий, таблица, воспроизводимый код и порядок внедрения. Три текста не повторяют один и тот же вывод под разными заголовками.
  • Убрано неподтверждённое обобщение о распространённости конкретной версии jQuery в 2018 году; примеры лишь задают поддерживаемую версию.

Ревью 3 — визуал и выпуск

Пройдено для черновой партии; после интеграции нужен штатный общий выпускной прогон.

  • Три SVG валидированы командой xmllint --noout и открыты в локальном рендере. После финальной правки нет обрезанных заголовков, стрелок или кодовых строк.
  • У каждого будущего contentHtml есть один figure с осмысленными alt и подписью, одна таблица в обёртке div.table-scroll и три блока кода.
  • В существующих стилях .table-scroll имеет горизонтальную прокрутку, а таблица — min-width: 620px; это сохраняет читаемость на узком экране без сжатия ячеек.
  • Команда node --check web/scripts/upgrade-2018-05.mjs прошла. Команда node web/scripts/upgrade-2018-05.mjs --print-revisions печатает валидный JSON ровно трёх ревизий и не записывает архив.

Перед интеграцией

  1. Основной агент импортирует JSON из параметра --print-revisions и сопоставляет только три перечисленных slug.
  2. Запускаются общий аудит партии и production-сборка.
  3. На собранных страницах повторяется проверка таблиц в узком viewport, потому что эта ветка по задаче не изменяет articles.json.

Приёмка основного агента

  • Повторный quality-gate прошли все три статьи: 7 718 / 8 088 / 8 729 знаков основного текста, по одной схеме, таблице и трём блокам кода.
  • Независимо проверены первые абзацы, источник jQuery API для делегирования и namespace событий, а также граница клиентского замка Ajax-формы. Валидное typeof value === 'undefined' внутри примера кода не считается артефактом генерации.
  • Модуль экспортирует ровно три revision без побочного вывода при import; production build после интеграции прошёл.