<%= post.title %>
<%- DOMPurify.sanitize(post.content) %>
正文:
在Web开发中,富文本编辑器与模板引擎的配合使用是个常见需求。当使用CKEditor这样的所见即所得编辑器时,如何在后端通过EJS模板正确渲染用户提交的HTML内容,需要特别注意以下几个关键点:
直接渲染用户提交的HTML存在XSS风险,推荐使用DOMPurify等库进行过滤:
html
<%- DOMPurify.sanitize(editorContent) %>
CKEditor生成的HTML通常包含内联样式,需要在EJS中启用原始HTML输出:
ejs
当内容包含代码片段时,建议使用highlight.js实现语法高亮:
html
// 示例代码
const express = require('express');
app.set('view engine', 'ejs');
ejs
在Express路由中需要设置正确的Content-Type:
javascript
router.get('/post/:id', async (req, res) => {
const post = await Post.findById(req.params.id);
res.render('post', {
post,
title: post.title
});
});
通过以上方法,可以确保CKEditor生成的内容在各种设备上都能正确显示,同时保持代码的可读性和安全性。实际项目中还需要根据具体需求调整白名单规则和样式覆盖方案。