javascript - 如何避免生成的 JavaScript 字符串文字包含用于缩进的空格?

标签 javascript typescript

假设我有一个如下所示的 HTML 字符串文字模板:

let tpl = 
  `<div>
        <h1>Hello world</h1>
   </div>`;

一旦编译为 javascript (es5),它就会变成这样:

var tpl = "<div>\n    <h1>Hello World</h1>\n     </div>

这在生成的代码中占用了不必要的空间。我该怎么做才能使生成的代码像这样:

var tpl = "<div><h1>Hello World</h1></div>";

或者至少:

var tpl = "<div>" + "<h1>Hello World</h1>" + "</div>";

无需在我的 TypeScript 源代码中实际编写此逻辑?

最佳答案

模板字符串保留空格。 您需要编写的字符串开头不包含空格。

var tpl = `<div>
<h1>hello world</h1>
</div>`

更新:如果您愿意,可以使用标记字符串模板:

function trimIndent(strings: TemplateStringsArray) {
  return str[0].split('\n').map(s => s.trim()).join('')
}

var tpl = trimIndent`<div>
  <h1>Hello World</h1>
</div>`

您可以改进函数trimIndent()来满足您的需求。

关于javascript - 如何避免生成的 JavaScript 字符串文字包含用于缩进的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42980902/

相关文章:

javascript - 我无法使用 NativeScript 在 jsPDF 中渲染图像

angular - Nav和NavController的push方法有什么区别

javascript - 模块/类的 TypeScript/导入和导出 - 运行导入类时出现运行时错误

reactjs - 类型 'IntrinsicAttributes & IntrinsicClassAttributes<DatePicker> & Readonly<{ children?: ReactNode; }> ...' 上不存在属性

javascript - Range Slider 控制 Scrollable Div

javascript - 逐行向列添加底部边框,但不是最后一个+响应

javascript - 类似 Twitter 的推文框?

javascript - iOS/Android 检测和重定向

angularjs - Angular 2 中接口(interface)的命名约定是什么?

node.js - 路由在 src/index.html 中不起作用