一、安全问题
编写vue,甚至是任何项目的时候,都需要注意一些注入的安全问题,以下是vue项目作为例子:
- url注入
- html注入
- 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 对象