在EJS模板中如何限制从JS获取内容的显示字符数?
在EJS中截断文本仅显示前100字符的实现方案
方法一:直接在模板中使用字符串截断逻辑
在EJS模板里通过JS表达式直接判断文本长度,超过100字符时截取前100位并添加省略号:
<!-- 假设从JS传递的内容存在post对象的body字段中 --> <p><%= post.body.length > 100 ? post.body.slice(0, 100) + '...' : post.body %></p>
- 用
slice(0, 100)截取前100个字符,也可替换为substring(0, 100),效果一致 - 若文本长度≤100,则直接显示完整内容
方法二:封装自定义过滤器(适合多处复用场景)
如果项目中多个页面需要文本截断,可在Express中注册全局自定义函数,方便模板调用:
- 在Express配置文件中添加全局方法:
// app.js 或相关配置文件 app.locals.truncateText = function(text, maxLength = 100) { // 处理文本为null/undefined的情况,避免报错 if (!text) return ''; return text.length > maxLength ? text.slice(0, maxLength) + '...' : text; };
- 在EJS模板中直接调用该方法:
<p><%= truncateText(post.body) %></p> <!-- 也可自定义截断长度,比如显示前150字符 --> <p><%= truncateText(post.body, 150) %></p>
额外注意
如果body字段包含HTML标签,直接截断可能导致标签未闭合、页面样式错乱:
- 若不需要保留HTML格式,可先移除标签后再截断
- 若要保留HTML结构,需使用支持HTML安全截断的工具,确保标签完整闭合
内容的提问来源于stack exchange,提问作者Shreyansh Malhotra
相关产品推荐
相关产品推荐

