#!/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 语法: