vue基础小结
在子组件中,当前数据的键值对和当前DOM元素绑定,对于每个DOM元素,this指向的直接就是当前DOM元素绑定的那一组键值对,而非指向的整个数据组。利用这一点,可以设置监听事件,将当前DOM元素绑定的键值对中某个具有识别性的数据传给父组件,让父组件可以在整个数据组中锁定那个需要进行操作的键值对。
和之前绑定自定义属性的对比
和之前学过的在创建标签时,给标签绑定和数据相关的自定义属性类似,只不过之前的是需要通过e.target来获取被操作的元素,进而来修改元素的属性,而vue是通过被监听的元素事件触发后,会向父组件传递回被触发DOM元素所绑定的数据,然后父组件在数据组中锁定被触发的键值对,处理之后展示在子组件的DOM元素中(此处让DOM元素展示改变的vue内部封装代码是什么我不知道,但我猜测是和Ajax一样,根据获取到的数据写在模板中,然后根据模板内容修改DOM树,区别是Ajax那个是重铺DOM树,而vue是根据虚拟DOM对比后去小范围的修改DOM树)。
瓶颈思考
学到vue之后,总以为vue是用了什么更好的方法可以去完成我们要做的事情,但是经过一遍遍思考之后,觉得确实是用了更好的方式,却也并不是更好的方式。好的地方在于它封装了,使用起来更为简便;并没有那么好的原因是,实际上的底层处理方式或许一样,只不过封装之后使用起来的方式不一样了。vue优秀的地方在于:vue的虚拟DOM技术可以更为准确的修改变化的节点,而非像之前那样完全重铺;vue重要的是代码组件化的方式,让一个页面的代码如一个个模块一样拼装在一起,耦合性低,更容易维护;以及它对一些常用行为模式的封装,让代码编写起来更为简便快捷 .
组件思考
从概念上讲,组件的意义是将一段重复使用的页面代码(包括html,css,js)封装,让其可以重复使用,优点前面也说过了,耦合性低,易于维护,便于重复使用。
在我看来,组件的模式更像是一个函数,而props数组里面写入的则是函数的形参,在父组件中,通过赋予属性值的方式将实参数据进行传递,又或者说更像一个构造函数,在传递进实参之后实例化出了一个页面的模块。
需要注意的是,在子组件中,props写的参数既可在实例化时接收数据,也可在实例化完成后作为锁定当前操作项的参数传递出去,但是当传递出去的数据会被修改时,需要将参数写在data(){}中(data中的参数只能作为子向父传递数据的传递项,而不能作为父向子传递数据的接收项)
关于什么类型的代码该在在父组件或子组件中写入的思考
在父组件以数组的形式将数据传给子组件后,子组件可以直接在子组件中进行数据的处理,原因是:尽管props中的数据是只读的,但是对于复杂数据类型而言,传入的是堆空间地址,可以通过修改属性值的方式修改其内数据,所以可以尽可能的在子组件中完善其所需要的所有功能,只在父组件中进行导入使用和实例化传值。