You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EJS模板中能否实现类似Classic ASP的response.write直接输出功能

EJS是否支持在<% %>逻辑块内直接调用输出

支持,不需要拆分逻辑标签和输出标签,也不需要自行实现ejs.write()方法,EJS在<% %>脚本块的执行上下文中内置了直接输出的API,使用体验和Classic ASP的response.write()基本一致。

实现方法

EJS编译模板时会生成独立执行函数,内部维护输出缓冲区,同时在上下文暴露print()方法供脚本块内直接输出:

  • print(输出内容):输出原始非转义内容,效果等价于<%- 输出内容 %>
  • print(输出内容, true):输出前自动转义HTML特殊字符,效果等价于<%= 输出内容 %>

你需要的同块内完成变量生成、内容输出的写法可以直接按如下方式实现:

<%
let someString = generateSomeStringHere()
// 输出原始内容
print(someString);

// 需要转义HTML时使用下面的写法
// print(someString, true);
%>

注意事项

  • print()是EJS原生提供的公开上下文方法,不需要额外引入或挂载变量,所有<% %>脚本块内都可以直接调用
  • “变量在模板外部生成”只是通用开发最佳实践,不是EJS的语法强制约束,你完全可以根据实际业务场景在模板脚本块内编写逻辑、直接输出,不存在语法问题
  • 不要直接操作__output这类内部私有变量,这类变量名可能随版本迭代调整,使用公开的print()方法是最稳定兼容的方案

内容的提问来源于stack exchange,提问作者Marc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:06:22