dot.js语法格式转换之后两个语句之间会形成一个空行如何解决
时间: 2024-03-11 11:47:18 浏览: 89
如果你使用 dot.js 的默认语法格式转换工具,会在每个语句之后添加一个空行,这是为了让生成的 HTML 代码更清晰易读。如果你不想要这个空行,可以通过修改 dot.js 的源代码来实现。
打开 dot.js 的源代码,找到 `compile` 函数,这个函数是用来将模板转换为可执行的 JavaScript 代码的。在这个函数的开头,你会看到这个代码:
```javascript
function compile(tmpl, options, tmplName) {
// ...
var source = "function(" + (compileOptions.argName || "obj") + "){\n" +
"var p=[],print=function(){p.push.apply(p,arguments);};\n" +
// ...
"return p.join('');}";
// ...
}
```
这段代码定义了最终生成的 JavaScript 函数的代码。注意到这一行:
```javascript
"var p=[],print=function(){p.push.apply(p,arguments);};\n" +
```
这里定义了一个 `print` 函数,用来将生成的 HTML 代码添加到一个数组中。每次调用 `print` 函数,都会将传入的参数添加到数组中。最终,这个数组会被拼接成一个字符串,作为函数的返回值。
要去掉空行,只需要将这个代码修改为:
```javascript
"var p=[],print=function(){if(arguments[0]) p.push.apply(p,arguments);};\n" +
```
这里在调用 `push` 方法之前,增加了一个判断,如果传入的参数是一个空字符串,则不将其添加到数组中。这样就可以去掉生成的 HTML 代码中的空行了。
修改完毕后,重新打包 dot.js 的代码,并使用修改后的版本即可。注意,修改 dot.js 的源代码可能会带来一些风险,建议在修改前备份原始的代码。
阅读全文