一、理解:

1.可能会导致 xss 攻击。比如用v-html一定要保证你的内容是可以依赖的,例:

<input type="text" v-model="msg"/>
<div v-html="msg"></div>
// 因为用户输入的信息不可信,这样输入什么就会放入什么,v-html就相当于一个innerHTML

2.v-html 会替换掉标签内部的子元素

二、原理

    let template = require('vue-template-compiler');let r = template.compile(`<div v-html="'<span>hello</span>'"></div>`)// 编译后,domProps就是一个innerHTMLwith(this){return _c('div',{domProps: {"innerHTML":_s('<span>hello</span>')}})}

// _c 定义在core/instance/render.js

// _s 定义在core/instance/render-helpers/index,js

三、源码

文件位置:src/platforms/web/runtiem/models/dom-props.js

function updateDOMProps (oldVnode: VNodeWithData, vnode: VNodeWithData) {for (key in props) {cur = props[key]// 如果key是textContent或者innerHTML是会将vnode的子节点都变成空if (key === 'textContent' || key === 'innerHTML') {if (vnode.children) vnode.children.length = 0if (cur === oldProps[key]) continueif (elm.childNodes.length === 1) {elm.removeChild(elm.childNodes[0])}}if (key === 'value' && elm.tagName !== 'PROGRESS') {} else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {} else if (cur !== oldProps[key]) {try {elm[key] = cur // 最终elm的key会被这个值覆盖} catch (e) {}}}
}

vue核心面试题:vue中v-html会导致哪些问题相关推荐

  1. vue核心面试题:Vue中相同逻辑如何抽离?

    一.mixin 使用vue中的Vue.mixin,给组件每个生命周期.函数等混入一些公共的逻辑,另外混入对象的钩子将在组件自身钩子之前调用..mixin可以放在全局使用,也可以放在组件中使用. vue ...

  2. vue核心面试题:v-for中为什么要用key

    一.v-for中为什么要用key 1.vue中列表循环需加:key="唯一标识" 唯一标识尽量是item里面id等,因为vue组件高度复用增加Key可以标识组件的唯一性,为了更好地 ...

  3. 阿瑶的vue学习笔记(1)Vue核心

    1. Vue核心 1.1. Vue简介 1.1.1. 官网 英文官网 中文官网 1.1.2. 介绍与描述 动态构建用户界面的渐进式JavaScript框架 作者:尤雨溪 1.1.3. Vue的特点 遵 ...

  4. 前端学习笔记之-VUE框架学习-Vue核心

    第一章:Vue核心 1.1.Vue简介 官网介绍:https://cn.vuejs.org/v2/guide/ 1.2.初识Vue <!DOCTYPE html> <html lan ...

  5. 总结关于 Vue 框架面试题

    MVVM设计模式 MVC.MVP与MVVM模式 MVC.MVP与MVVM的区别 MVVM的实现原理 Object.defineProperty()方法 ES6中定义的类和对象 JS中的文档碎片 解构赋 ...

  6. VUE教程(持续更新中)

    VUE教程 目录 1. VUE简介 1-1. 技术发展的过程: 2. 使用VUE框架 2-1. 构建你的第一个VUE程序 2-2.VUE核心原理 2-3. VUE组件 2-4. 工程结构 1. VUE ...

  7. Vue全家桶(Vue基础看这篇就够了)

    目录 第一章:vue核心 1.1.Vue 简介 1.1.1 官网 1.1.2 Vue是什么? 1.1.3 Vue的特点 1.1.4 Vue周边库 1.2 初识Vue 1.3 模板语法 1.4 数据绑定 ...

  8. 前端面试题 Vue 中的 生命函数(钩子函数)

    目录 一,生命周期(钩子函数) 的简介 二,四类钩子函数的 触发条件 及 使用方法 钩子函数声明的位置: 1. Lifecycle-初始化 beforeCreate 和 created 2.Lifec ...

  9. VUE 笔记(持续更新中...)

    最近刚好我也在学习vue,这些是我的一些笔记,记录下来,方便用的时候查看,欢迎大家批评指正! 1. 简介 Vue.js是JavaScript MVVM(Model-View-ViewModel)框架 ...

最新文章

  1. java异常对象引用变量_Java面向对象编程-异常处理
  2. 高速无人机独立穿越森林,全程自己规划路线,时速高达40公里
  3. js/jQuery判断浏览器名称、内核版本、浏览器壳
  4. knowladge_网站开发_jQuery插件_Clock Demo
  5. pytorch切片,numpy切片的总结,以及数组切片常用操作的总结
  6. 精益软件过程中七大浪费的应对之道
  7. ASP.NET跨平台实践:无需安装Mono的Jexus“独立版”
  8. ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项
  9. Python通过Zabbix API获得数据
  10. android audit2allow工具使用步骤
  11. 去中心化 去区块链_基于区块链的去中心化应用的四种架构模式候选
  12. 基于Python的HTTP接口测试
  13. Tri_integral Summer Training 9 总结
  14. 樊正伦教授的养生之道中医文化与养生之---调情志
  15. 关于单位申请进京指标
  16. 第二课——如何有逼格地打字
  17. MySQL DATE_SUB() -- 从日期减去指定的时间间隔
  18. 测试管理之绩效考核指标--测试计划+测试用例+测试环境部署工作指标!!!
  19. 华为TE10一体化视频会议终端
  20. Windows系统安装了虚拟机后,网络无法修复且无网络连接如何修复?跟随作者一起来寻找问题并解决吧

热门文章

  1. 希尔伯特计划是什么?
  2. 2019年上半年信息安全工程师上午选择题及解析
  3. 风云诀动画版快上映了
  4. 微信如何做私域流量,如何利用淘宝和微信做到私域流量内的互动成交呢?
  5. 织梦网站在服务器上不显示验证码,dedecms在Nginx服务器上验证码不显示解决方法...
  6. 土木工程个人简历模板范文--带具体内容
  7. 以下不属于操作系统的是android,【单选题】以下( )不是智能手机操作系统。 A. Android B. Windows Phone C. iOS D. Windows 7...
  8. C#连接MySQL添加数据
  9. 手机端触摸滑动(H5+CSS3+JS+Swiper)
  10. sql语句———多表联查