Files
progcode/editorial/reviews/2019-02-draft.md
T
huncode 238c1f7688
Build and deploy / deploy (push) Successful in 13s
revise February to May 2019 articles
2026-07-31 10:32:34 +03:00

64 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# П12 · 2019-02 · ES-модули в браузере
Статус: **принят в публикационный слой 31 июля 2026 года**. Registry
накладывает ревизии только по стабильному slug; дата и автор остаются у
базового архива.
## Граница пакета
- Slug: editorial-2019-02-practice-es-modules, editorial-2019-02-mechanism-es-modules, editorial-2019-02-field-es-modules.
- Голос: М2, 2019 год. Автор переносит практику диагностики из PHP/Bitrix на границу браузера, URL и сборщика; не выдаёт себя за владельца большой платформы.
- Три разных вопроса: минимальный native start; отличие браузерной URL-резолвации от этапа Webpack; диагностика двух module identity и ошибочного пути.
- Все примеры помечены как учебные. В тексте нет заявления о настоящем browser trace, чужой production-сборке или измерении задержки.
- Первичные источники: ECMAScript 2019, HTML Living Standard для script/module map и Fetch Standard для CORS. Для исторического ракурса native-примеры намеренно не используют import map, aliases и package resolution.
## Pass 1 — факты и техника
- Проверена граница стандартов: ECMAScript задаёт синтаксис и граф import/export, HTML задаёт загрузку, резолвацию URL и время вычисления module script.
- Сверен native start: module script без async загружает граф параллельно разбору и вычисляется после разбора документа; defer не создаёт для module script отдельный режим.
- Сверен путь: URL-подобные ./, ../ и / разрешаются от base URL импортёра. Браузер не обязан подставлять .js и не наследует aliases или package lookup Webpack.
- Сверена identity: module map ключуется URL и типом. Отличный query создаёт отдельную identity; одинаковый нормализованный URL повторно не вычисляется в том же документе.
- В полевой статье status 200 не объявлен достаточным доказательством: отдельно проверяются Response, Content-Type, Initiator и CORS.
- В механической статье порядок зависимость → потребитель показан на учебном графе, а циклические импорты и два entry названы ограничениями.
- Вердикт: соответствует. Bundler-поведение нигде не названо браузерной спецификацией.
## Pass 2 — редактура и голос
- Первые одно-два предложения каждого текста называют симптом и цену ошибки: пустой интерфейс, лишняя конфигурация, двойная инициализация или ложный ремонт.
- У каждого материала один главный вопрос и единая цепочка: симптом → причина → проверка → действие → ограничение.
- Тон короткий и предметный: наблюдения привязаны к URL, Network, Content-Type, entry, import.meta.url или конфигурации, а не к общим оценкам.
- М2-словарь ограничен ES-модулем, графом зависимостей, entry, asset, URL, chunk и source-механикой. Поздние рамки уровня SLO, Kubernetes, OpenTelemetry и организационные метрики не добавлены.
- Объём основного текста, который посчитал draft gate: practice — 7 998; mechanism — 7 831; field — 8 306 знаков. Во всех трёх 8–9 разделов, таблица с thead и scope, code, ordered list, figure, ограничения и точный раздел источников.
- Вердикт: соответствует голосу автора 2019 года. Из текста удалены универсальные обещания и неподтверждённый личный опыт.
## Pass 3 — визуал и выпуск
- Созданы три разные объясняющие SVG: граф native start, граница browser/Webpack и диагностика URL identity.
- XML каждого SVG валиден. У каждой figure есть осмысленный alt и подпись, которые передают причинную модель без чтения текста внутри картинки.
- SVG открыты в локальном HTTP-preview при ширинах 1280 и 375 px. После узкого прохода схемы переведены в вертикальную композицию: все блоки, стрелки и ключевые метки остаются видимыми, текст не обрезан, горизонтального overflow нет.
- Проверена существующая разметка выпуска: .article-content figure img имеет width: 100%, а .table-scroll включает overflow-x: auto и таблице задан min-width. Пакет использует именно эти контейнеры.
- Передача в архив не производилась; production build не заявляется как выполненная, потому что автономный черновик не меняет data/articles.json.
- Вердикт: готов к интеграционному ревью.
## Фактические проверки
| Проверка | Команда или метод | Результат |
| --- | --- | --- |
| Синтаксис модуля | node --check scripts/upgrade-2019-02.mjs из web | PASS |
| Import-safe и JSON-only CLI | npm run audit:draft -- scripts/upgrade-2019-02.mjs из web | PASS: три revision, CLI совпадает с export |
| Контентный gate | та же команда audit:draft | PASS: 7 998 / 7 831 / 8 306 body chars |
| XML | xmllint --noout для трёх SVG из web | PASS |
| Статический preview | curl -I http://127.0.0.1:4173/assets/editorial/2019/es-modules-native-graph-2019.svg | PASS: 200, image/svg+xml |
| Визуал | локальный preview всех трёх SVG в браузере, 1280 и 375 px | PASS: без обрезания и горизонтального overflow |
| Границы фактов | ECMAScript 2019, HTML и Fetch primary sources | PASS: утверждения сверены перед редактурой |
## Выпусковой вердикт
После интеграции основной редактор повторно прогнал строгий аудит: все три
slug прошли объём 7 998 / 7 831 / 8 306 знаков, figure, таблицу, код,
маршрут действий и источники. <code>npm run build</code> завершился с
кодом 0 и сгенерировал 374 статические страницы.
Пакет принят к публикации. <code>articles.json</code> не менялся: registry
подменяет только редакционные поля по стабильному slug.