通常情况下,字符串会以纯文本形式插入,这意味着像 <
和 >
这样的字符没有特殊含义。
但有时你需要直接在组件中渲染 HTML。例如,你现在正在阅读的这些文字存在于一个 markdown 文件中,该文件作为一块 HTML 被包含在这个页面中。
在 Svelte 中,你可以使用特殊的 {@html ...}
标签来实现这一点:
App
<p>{@html string}</p>
重要提示:Svelte 在将
{@html ...}
内的表达式插入到 DOM 之前不会执行任何净化(sanitization)处理。如果内容是你信任的,比如你自己写的文章,这不会有问题。但是,如果是一些不受信任的用户内容,例如文章的评论,那么手动转义就变得至关重要,否则你可能会使用户面临跨站脚本攻击(XSS)的风险。
1
2
3
4
5
6
<script>
let string = `this string contains some <strong>HTML!!!</strong>`;
</script>
<p>{string}</p>