美文网首页
2018-03-27

2018-03-27

作者: 小熊530 | 来源:发表于2018-03-27 23:21 被阅读0次

组件(一)

什么是组件

  • 组件可以扩展 HTML 元素,封装可重用的代码。

组件是对原始HTML进行一层封装,来拓展它的能力。

  • 在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能

vue的编辑器到底为元素添加了什么功能?我觉得可以绑定到元素上的东西,都是为它添加的功能,而这些功能是原始html不具备的。

  • 所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象(除了一些根级特有的选项) 并提供相同的生命周期钩子

这句话不太理解,是不是每一个组件都有自己的vue实例,因为他们都是vue的实例。选项对象又是什么?是不是每个组件有的对象? 如:template、data、methods等这些东西?所以每个组件都有自己的生命周期。不太理解。

全局注册&局部组件

我查了一下,全局组件好像指:所有的vue实例都可以访问。在任何地方都可以直接用。

类似于全局安装变量,应该是少用,除非所有组件都能够用到的组件可以注册到全局组件。那么我们写过的组件就不是全局组件,应为组件之间不能直接访问,都需要引过来,components中注册都使用。是这个意思吧?话说vue-cli怎么注册全局组件啊?我还不知道、、、

DOM 模板解析注意事项

主要讲的是is特性,主要用tr、ol标签需要用到is特性。但是应该遇到的很少。

里面提到了字符串模板,也就是HTML被当成了字符串。但是.vue文件没有这样的问题。

data必须是函数

其实data虽然是函数,但是函数里面却return {},data最终的值还是一个对象。为什么?我猜是因为对象是引用类型,返回的是一个地址,所以需要包一层函数?

组件组合

组件传值要在父组件中的子组件的标签上 :变量名=变量名,在子组件中通过props:{变量名:xxxxx},来接收数据,我平时用的这三个变量名是一致的,便于识别。

camelCase vs. kebab-case

camelCase是js的变量命名方式,kebab-case:是THML的命名方式。所有组件的放在HTML中用kebab-case,组件文件命名用帕斯卡,首字母大写

因为这原来是HTML的命名方式,现在vue对html进行再封装,所以放在HTML中组件要写成kebab-case,遵循原HTML样式,符合HTML规范。

动态prop

父子组件通信就是动态的prop,父组件数据变化子组件接受到的数据就会动态变化。

字面量语法 vs 动态语法

就说了一个只是点,为prop传值不能传常量,如果你一定要传常量,请加上v-bind,常量就变成了表达式。<div a=1>=><div :a=1>

单向数据流

规矩:值允许父往子传数据不允许子往父传数据。也就是说不能让子内部数据发生的变化,传给父组件。

单向数据流,这有点像函数纯的特点,我调用一个函数100次,返回给我100次相同的结果,而不应该是不同的结果。我觉得单项数据流,就是要保持这种纯的特性,如果还能逆向传递,那么vue组件内部就会不可控。

父子组件通信就是为了保证数据是可控的,可跟踪的。

Prop 验证

我们的项目规定的是props需要验证,写出需要的数据类型等

相关文章

网友评论

      本文标题:2018-03-27

      本文链接:https://www.haomeiwen.com/subject/tkuecftx.html