Vue编写时的一些注意事项(11)(--注意事项 、安全 、响应式)

一、安全问题

编写vue,甚至是任何项目的时候,都需要注意一些注入的安全问题,以下是vue项目作为例子:

  1. url注入
  2. html注入
  3. style注入

点击这里,查看详细的说明

二、响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim (shim可以将新的API引入到旧的环境中,而且仅靠就环境中已有的手段实现。 ) 的特性,这也就是 Vue 不支持 IE8 以及更低版本浏览器的原因。
在这里插入图片描述

  • Vue 无法检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化,所以属性必须在 data 对象上存在才能让 Vue 将它转换为响应式的,即需要使用对象应该初始化的时候就定义完成

  • Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次,这也是computed 与 watcher 的区别

  • 当你设置 vm.someData = ‘new value’,该组件不会立即重新渲染。当刷新队列时,组件会在下一个事件循环==“tick”==中更新,也就是说,为了在数据变化之后等待 Vue 完成更新 DOM,我们通常需要在 this.nextTick() 中进行 ,$nextTick() 返回一个 Promise 对象

发布了50 篇原创文章 · 获赞 4 · 访问量 1283

猜你喜欢

转载自blog.csdn.net/weixin_43910427/article/details/104510271