问题:JavaScript是否具有等效的PHP输出缓冲(start, get_clean)
或<<< EOF ... EOF
语法来将变量中的内联HTML包装?垫片,库,函数,以及在现代浏览器中完成工作的任何东西。
为什么:我想尝试在纯JS中创建一个MVC框架,并且考虑使用字符串或读取文件创建HTML块以及对关键字进行查找/替换让我想知道代码的效率/可维护性如何
答案 0 :(得分:3)
要回答您的问题,不,JavaScript没有heredoc语法之类的内容。 (CoffeeScript可以,但 ewww 。)
您应该看看如何实施模板引擎。我是doT的粉丝,very efficient。您在script
块中定义模板,从那里加载模板源,引擎将其编译为函数。 (eval
的少数合法用途之一。)
<script type="text/x-dot-template" id="mytmpl">
Hello, <b>{{=it.name}}</b>
</script>
var tmpl = doT.template($('#mytmpl').html());
tmpl({name:'test'}); // => 'Hello, <b>test</b>'
这可以使您的标记不受JavaScript和HTML所属的标记。
答案 1 :(得分:1)
不,JavaScript没有。下一版ECMAScript将此作为提案。但谁知道浏览器何时会真正支持它。
现在常见的替代方法是在代码中添加<script type="text/html">
块(有时类型为text/template
,这似乎是任意的),并使用JavaScript加载该块。许多模板工具现在都这样做。因为它只是一个HTML标签,你可以在里面放置任何你想要的东西,不需要像疯子那样连接字符串。
答案 2 :(得分:1)
我不知道你对“输出缓冲”是什么意思。 JavaScript中的每个操作都会立即执行,但浏览器可能会延迟某些布局渲染。
Javascript中没有EOF-syntay,但您可以使用反斜杠来逃避换行:
"a\
b" === "ab"; // true
这可能有助于提高可读性。