我正在从lodash模板渲染HTML (使用webpack),但是lodash模板正在创建新的换行符。美化HTML不会有什么帮助,因为这些行不是“错误”。
我使用的是:
<!-- Theme
============================================= -->
<%if (theme == "main") { %>
<link rel="stylesheet" href="css/theme.css" />
<% } %>结果就是。在HTML <link>的上方和下方换行
<!-- Theme
============================================= -->
<link rel="stylesheet" href="css/theme.css" />这就是我想要的,上面和下面没有任何换行符:
<!-- Theme
============================================= -->
<link rel="stylesheet" href="css/theme.css" />有一个hack可以像这样在一行中做所有的事情,但是这会变得丑陋,因为代码太长了。
<!-- Theme
============================================= -->
<%if (theme == "main") { %><link rel="stylesheet" href="css/theme.css" /><% } %>发布于 2019-01-16 02:07:17
您可以使用_.trim()从结果的开头和结尾删除\n,使用带有RegExp的_.replace()将多个连续的\n转换为单个\n:
const str = `<!-- Theme
============================================= -->
<%if (theme == "main") { %>
<link rel="stylesheet" href="css/theme.css" />
<% } %>`;
const compiled = _.template(str);
const fn = _.flow([
compiled,
str => _.trim(str, '\n'),
str => _.replace(str, /(\n)\1+/, '$1'),
]);
const result = fn({ 'theme': 'main' });
console.log(result);.as-console-wrapper {
top: 0;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
https://stackoverflow.com/questions/54200674
复制相似问题