#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""原型 JS 与模板字面量的**语法门禁**(③段 3b/3d 用,只读原型,⛔ 不写盘)。
为什么需要它(不是"为了严谨",是同一个坑踩了 **4 次**的真实事故):
原型是单文件自包含,页面结构写在一堆 JS **模板字面量**里(反引号包起来的字符串)。
只要在模板里的 **HTML 注释**(``)中写出一个反引号,模板字面量就会被提前闭合,
而后面那段被当成 JS 代码解析 —— 症状是**页面静默坏掉**(白屏 / `xxx is not defined` /
`Unexpected identifier`),而 `node --check 整份 html` 是**报不出来**的(html 不是 js),
于是它一路混到浏览器里才炸。
已经踩到的 4 次(每次都是「HTML 注释里带反引号」):
1. P1 的 `.grid.cols2` 注释 → 页面白屏
2. P2 的 `.home-stats` / `.stat-item` 注释 → `stats is not defined`,自检没跑完
3. P2 的 `.grid-cards` / `font-size` 注释 → `Unexpected identifier 'style'`
4. P1 的 `.qa-block` / `.func-card .qa{...}` 注释 → `Unexpected token '{'`
本脚本查两件事:
① **语法**:把 `')
js = src[i:j]
# ① 语法:把 script 抠出来给 node --check
node = NODE if os.path.exists(NODE) else 'node'
with tempfile.NamedTemporaryFile('w', suffix='.js', delete=False, encoding='utf-8', newline='') as f:
f.write(js)
tmp = f.name
try:
r = subprocess.run([node, '--check', tmp], capture_output=True)
if r.returncode == 0:
print('PASS 语法: