当前位置: 首页 > news >正文

10 Vue3中v-html指令的用法

概述

v-html主要是用来渲染富文本内容,比如评论信息,新闻信息,文章信息等。

v-html是一个特别不安全的指令,因为它会将文本以HTML的显示进行渲染,一旦文本里面包含一些恶意的js代码,可能会导致整个网页发生崩溃。

不过,v-html在渲染富文本的场景中,有着非常大的优势,所以在一些博客网站项目中,经常能够看到这个指令的出现。

基本用法

我们创建src/components/Demo10.vue,在这个组件中,我们要分别渲染以下情形的HTML内容:

  • 场景1:纯文本内容
  • 场景2:比较简单的HTML内容
  • 场景3:包含CSS样式的HTML内容
  • 场景4:包含JS脚本的HTML内容
  • 场景5:包含CSS+JS的HTML内容

代码如下:

<script setup>
const s1="你好,张大鹏"
const s2="<h1>你好,张大鹏</h1>"
const s3="<h1 style='color: red'>你好,张大鹏</h1>"
</script>
<template><div>纯文本:<span v-html="s1"></span></div><div>比较简单的HTML内容:<div v-html="s2"></div></div><div>包含CSS样式的HTML内容:<div v-html="s3"></div></div><div>包含JS脚本的HTML内容:<div v-html="`<script>console.log('你好,张大鹏')</script>`"></div></div><div>包含CSS样式+JS脚本的HTML内容:<div v-html="`${s3}<script>console.log('你好,张大鹏')</script>`"></div></div>
</template>

接着,我们修改src/App.vue,引入Demo10.vue并进行渲染:

<script setup>
import Demo from "./components/Demo10.vue"
</script>
<template><h1>欢迎跟着Python私教一起学习Vue3入门课程</h1><hr><Demo/>
</template>

然后,我们浏览器访问:http://localhost:5173/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

完整代码

package.json

{"name": "hello","private": true,"version": "0.1.0","type": "module","scripts": {"dev": "vite","build": "vite build"},"dependencies": {"vue": "^3.3.8"},"devDependencies": {"@vitejs/plugin-vue": "^4.5.0","vite": "^5.0.0"}
}

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],
})

index.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite + Vue</title></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

src/main.js

import { createApp } from 'vue'
import App from './App.vue'createApp(App).mount('#app')

src/App.vue

<script setup>
import Demo from "./components/Demo10.vue"
</script>
<template><h1>欢迎跟着Python私教一起学习Vue3入门课程</h1><hr><Demo/>
</template>

src/components/Demo10.vue

<script setup>
const s1="你好,张大鹏"
const s2="<h1>你好,张大鹏</h1>"
const s3="<h1 style='color: red'>你好,张大鹏</h1>"
</script>
<template><div>纯文本:<span v-html="s1"></span></div><div>比较简单的HTML内容:<div v-html="s2"></div></div><div>包含CSS样式的HTML内容:<div v-html="s3"></div></div><div>包含JS脚本的HTML内容:<div v-html="`<script>console.log('你好,张大鹏')</script>`"></div></div><div>包含CSS样式+JS脚本的HTML内容:<div v-html="`${s3}<script>console.log('你好,张大鹏')</script>`"></div></div>
</template>

启动方式

yarn
yarn dev

浏览器访问:http://localhost:5173/

相关文章:

  • 【Matlab in VSCode】在VSCode中编辑MATLAB文件
  • Win7如何修改MAC地址
  • 油猴脚本教程案例【键盘监听】-编写 ChatGPT 快捷键优化
  • 【原理图PCB专题】原理图图纸锁定/解锁与PCB文件加密方式
  • C语言操作符详解+运算符优先级表格
  • 云原生系列2-CICD持续集成部署-GitLab和Jenkins
  • Linux环境安装Hadoop
  • JDBC学习,从入门到入土
  • 如何搭建Web自动化测试框架?
  • MyBatis:动态 SQL 标签
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • C语言数据结构-排序
  • flutter + firebase 云消息通知教程 (android-安卓、ios-苹果)
  • 【爬虫软件】孔夫子二手书采集
  • Java 中的内部类的定义
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java读取Properties文件的六种方法
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Leetcode 27 Remove Element
  • Redis 中的布隆过滤器
  • SAP云平台里Global Account和Sub Account的关系
  • spring + angular 实现导出excel
  • SQL 难点解决:记录的引用
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 成为一名优秀的Developer的书单
  • 面试遇到的一些题
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 事件委托的小应用
  • 小程序01:wepy框架整合iview webapp UI
  • 小试R空间处理新库sf
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 找一份好的前端工作,起点很重要
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • #WEB前端(HTML属性)
  • (¥1011)-(一千零一拾一元整)输出
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (ZT)一个美国文科博士的YardLife
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (三)mysql_MYSQL(三)
  • (三分钟)速览传统边缘检测算子
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)负载均衡,回话保持,cookie
  • .net 程序发生了一个不可捕获的异常
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...