不打断缩进的多行字符串

新手上路,请多包涵

根据 这个 esdiscuss 讨论,可以在 ECMAScript 6 中定义多行字符串,而不必将字符串的后续行放在该行的最开头。

Allen Wirfs-Brock 的帖子 包含一个代码示例:

 var a = dontIndent
        `This is a template string.
         Even though each line is indented to keep the
         code neat and tidy, the white space used to indent
         is not in the resulting string`;

有人可以解释这是如何实现的吗?如何定义这个 dontIndent 东西以删除用于缩进的空格?

原文由 Šime Vidas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 326
1 个回答

2020 年答案:尽管 TC39 已经讨论过添加一个新的模板文字来处理缩进,但 JS 标准库中仍然没有内置任何内容来处理去除长行的凹痕。您目前有 2 个选择:

  1. endentdedent-js 包将处理这个。请注意 dedent-js 包实际上适用于制表符和空格。
     var dedent = require('dedent-js');

     var text = dedent(`
      <div>
        <span>OK</span>
        <div>
          <div></div>
        </div>
      </div>
    `);

将删除每行上的后续空格和前导回车。它也有更多的用户,一个问题跟踪器,并且比从 Stack Overflow 复制粘贴更容易更新!

注意: dedent 是一个独立的包 dedent-jsdedent 在选项卡上失败。

  1. 不要缩进长行,而是 使用将长行显示为 indented 的编辑器。例如,vsCode - 你可以简单地使用长行,不缩进任何东西,并在长字符串中包含回车符。 vsCode 将缩进显示它们。下面的字符串没有缩进 - 第二行 The empty export... 紧跟在回车之后,但显示为缩进。

在此处输入图像描述

原文由 mikemaccana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题