Nuxt中不使用v-html,如何渲染来自数据库中的html内容?

新手上路,请多包涵
asyncData({ app, params }) {
    return app.$api.GetArticle(params).then((res) => {
        return { article: res.data }
    })
},
<div v-html="article.content"></div>

从数据库中拿到的数据包含许多html标签的文章内容

原本只需要v-html插入数据即可,es-lint提示有注入风险

那么有什么其他的方式渲染数据库中的html内容呢?

阅读 6k
2 个回答

通常情况下,这种警告是不需要在意的。但是,如果你确实在意安全的话,可以在展示html内容之前先用sanitize-html“净化”一下:

npm install sanitize-html

在代码当中初始化:

Vue.prototype.$sanitize = sanitizeHTML

然后,就可以在需要用的地方:

v-html="$sanitize(html)"

参见尤大在2017年的解释

一般这种东西入库前都需要关键字监测和转义

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题