VSCode - 把手内的 JavaScript 片段 <script>

Gre*_*n23 5 javascript handlebars.js visual-studio-code vscode-settings

问题

在 Visual Studio Code 中,在 Handlebars 文件中,在 中编辑 JavaScript 代码时,JavaScript 代码<script>段不可用。

目标

在这种情况下使用 JavaScript 片段。

例子

假设我在一个带有<script>标签的把手文件中。

<script type="text/javascript">
  console.log('This is JavaScript code.');
</script>
Run Code Online (Sandbox Code Playgroud)

在编辑 中的代码<script>时(即,当光标位于<script>和之间时</script>),我想使用我的 JavaScript 片段。但是我不能。Handlebars 片段可用,而不是 JavaScript 片段。

  1. VSCode 语言把手
  2. 插入片段
  3. 车把片段

但是,如果我将文件语言从“Handlebars”更改为“HTML”,则 JavaScript 片段将可用。

  1. VSCode 语言 HTML
  2. 插入片段
  3. JavaScript 片段

(唯一的变化是语言选择;光标位于相同的位置。)


对于这两种语言选择,<script>内容都使用 JavaScript 语法高亮显示。

  • 车把:
    • 把手语法高亮
  • HTML:
    • HTML 语法高亮

当文件语言为 Handlebars 时,使用 Handlebars 注释。当 HTML 时,使用 JavaScript 的。

  • 车把:
    1. 添加行注释
    2. 车把评论
  • HTML:
    1. 添加行注释
    2. HTML 注释

分析

此示例显示,在<script>内容内部:

  1. 当文件语言是 Handlebars 或 HTML 时,使用 JavaScript 语法高亮显示。
  2. 当文件语言为 Handlebars 时,将使用 Handlebars 片段和注释。
  3. 当文件语言为 HTML 时,将使用 JavaScript 片段和注释。

要可视化这些关系:

| File       | Highlights | Snippets   | Comments   |
| ---------- | ---------- | ---------- | ---------- |
| Handlebars | JS         | Handlebars | Handlebars |
| HTML       | JS         | JS         | JS         |
Run Code Online (Sandbox Code Playgroud)

VSCode 在这两种情况下都使用 JS 语法高亮。因此,它在两种情况下都识别出内容是 JS。

那么,为什么它不使用可识别语言的片段和注释呢?这是 VSCode 内置 Handlebars 扩展的可配置设置还是缺失功能?

笔记

这是 macOS High Sierra 10.13.4 上的 Visual Studio Code 1.21.1。

有我的 HTML 和 Handlebars 设置:

{
    "html.format.indentHandlebars": true,
}
Run Code Online (Sandbox Code Playgroud)

相关问题:

Wes*_*per 0

尝试在用户设置中添加对 *.hbs 文件的 emmet 支持。

{
  "emmet.includeLanguages": {
      "handlebars": "html"
  }
}
Run Code Online (Sandbox Code Playgroud)