vscode ES6 template literal HTML亮字提示
Contents
在 VSCode 中撰寫 JavaScript 時,如果在 Template Literal(模板字面值)裡嵌入 HTML 字串,預設不會有語法高亮或 IntelliSense 提示,閱讀起來相當辛苦。這篇記錄幾個解決方案。
問題說明
Template Literal 是 ES6 引入的字串語法,使用反引號(`)包住字串,支援多行與插值。在以下情況中,裡面的 HTML 沒有語法高亮:
|
|
VSCode 把整個字串當成純文字,沒有顏色區分,也不會提示 HTML 標籤或屬性。
解決方案一:es6-string-html(推薦)
安裝 es6-string-html 擴充套件後,只要在反引號前加上 /*html*/ 註解,VSCode 就會以 HTML 語法來高亮整段字串:
|
|
安裝方式:在 VSCode 擴充功能搜尋 es6-string-html,或執行:
|
|
這個套件同樣支援 CSS、SQL、Markdown 等語言的 template literal 高亮:
|
|
解決方案二:lit-html
如果使用 lit-html 或 LitElement 框架,直接使用 html tagged template literal:
|
|
安裝 lit-plugin VSCode 擴充套件後,html tag 的模板字串就會有完整的 HTML 語法支援,包含:
- 語法高亮
- 標籤與屬性自動完成
- Hover 提示文件
- 錯誤診斷
|
|
解決方案三:Inline HTML
Inline HTML 擴充套件支援多種 tag 名稱觸發 HTML 高亮,包括 html、raw、template 等,不需要安裝特定框架:
|
|
各方案比較
| 套件 | 觸發方式 | 適用場景 |
|---|---|---|
es6-string-html |
/*html*/ 註解 |
一般 Vanilla JS,最輕量 |
lit-plugin |
html tag |
使用 LitElement 框架 |
Inline HTML |
多種 tag 名稱 | 一般用途,彈性較高 |
實際應用場景
這個功能在以下情況特別有用:
- Vanilla JS 不使用框架:直接操作 DOM,用 template literal 組裝 HTML
- Web Components:
customElements.define搭配 template literal - Server-Side Rendering:Node.js 後端產生 HTML 字串
- 電子郵件模板:在 JS 中撰寫 HTML 郵件內容