我正在试验 HTML 字符串模板文字(使用 NodeJS 的电子)。
它运作良好,但看起来一团糟。我想念的是 HTML 和逻辑之间的分离。
这是我所拥有的
module.exports = {
snippet: (value1, value2) => {
return `
<div>
<h1>Hello ${value1 + ' - ' + value2}</h1>
</div>
`;
},
};
建议输出
我希望我能做的如下(不起作用):
module.exports = {
snippet: (value1, value2) => {
return require('snippet.html')(value1, value2);
},
};
<div>
<h1>Hello ${value1 + ' - ' + value2}</h1>
</div>
为什么它不起作用
字符串是扁平的,不能带参数
我可以从 HTML 文件中获取 HTML 作为字符串。问题是它将是“扁平的”,我不能再使用模板文字中的逻辑了。
eval 是邪恶而缓慢的
我已经读过可以将 HTML 作为字符串运行eval
以使其再次工作。我还读到它对安全性不利,而且速度很慢。
其他注意事项
- 我使用nodeJS所以我需要
module.exports
在js文件中使用。 - 我使用嵌套片段,因此模板文字仍然可以正常工作很重要。它应该可以带变量、函数等。
- 我不介意新的 ES6 语法。
- 我知道 Vue、React 和其他框架。我想保持它的小,这次没有设置服务器的麻烦。
更新 - 稍微好一点,但还不够
我现在已经从模板中分离出逻辑。尽管如此,两者都在同一个文件中,这使得 html 的可读性降低。
module.exports = {
snippet: (value1, value2) => {
/* Possible to put whatever logic in here */
return html(value1, value2);
},
};
function html(value1, value2) {
return `
<div>
<h1>Hello ${value1 + ' - ' + value2}</h1>
</div>
`;
}