vue组件学习

2018-02-04  本文已影响0人  _我和你一样

这是跟着高阳老师学习vue的课堂笔记,之前的都没做笔记。😅。
高阳老师的官网是一起学js,本来想发到老师创建的社区的,发现已经有人已经发了笔记了。我就不去发了。感兴趣的可以去学习。社区很好,高阳老师也是超级棒。


正文

vue的核心库,解决了数据和视图绑定问题。

组件是vue强大功能之一。

vue的组件 和 HTML中的便签 不是一个层面的东西了。这里的组件是对原始的HTML元素进行封装,来拓展它的能力。在较高层面上,组件是自定义的元素。vue.js的编辑器为它添加了特殊功能。这些功能是原始的HTML不具备的。

在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。

也就是说,与原生的HTML元素相比,元素增加了is特性。

<div>
  <xu> xxx </xu>
</div>

<xu>非原生的标签,但是并没有影响显示,说明解析是容错的。在解析的时候也没有什么问题。

但是在某些情况下,比如在列表中,默认的非原生的标签不能正常的显示。

<table>
  <my-row>...</my-row>
</table>

<my-row>是不能被解析成 tr来使HTML显示成我们希望的样子,

is特性(is what 是什么),是表现为某种标签样式的特性,比如下面示例,is='my-row' 告诉浏览器 my-row标签作为一个tr标签使用。

<table>
  <tr is="my-row"></tr>
</table>

is的那就话就是仿佛在说 这个元素是 什么什么 你先按这个解析。后续vue再偷天换日。

以下三种,HTML可以正常解析,可以不使用is属性。

所有的vue组件同时也都是vue的实例。他们可以接受相同的选项对象,并提供相同的声明周期钩子。

他们之间需要通过一些方法来通信。

组件的创建方式:

创建全局组件:

Vue.component('name',option_obj);

全局组件意思是 所有的vue实例都可以访问,

全局组件是vue中是不常用的,要尽量避免使用全局组件。

组件创建(或者注册)之后,便可以作为自定义标签在HTML中使用。

局部组件

不用全局创建,通过某个Vue对象的components选项实现。

new Vue({
  components : {
    ...
  }
});

除非所有的页面都能用到的组件,否则不要定义为全局组件。

在vue选项对象中定义的组件,仅供该vue实例使用。

组件组合

组件可以组合,组件套组件。形成新的组件。

使用属性prop传递数据

往组件里面塞数据,必须通过属性传递。v-bind:message="message"

Vue.component('child', {
  // declare the props
  props: ['message'],
  // like data, the prop can be used inside templates and
  // is also made available in the vm as this.message
  template: '<span>{{ message }}</span>'
})

v-bind:message 可以缩写成 :message

驼峰命名和短横线命名

在vue中,组件的名称请使用短横线方式。写HTML时的习惯就是短横线,而JavaScript中命名变量是习惯驼峰式命名的。

。。。。

高阶的HTML开发者可以都使用驼峰命名。因为高阶的vue开发者,不care HTML,HTML不是占主要部分,JavaScript占据主导地位。

v-指令 后面的双引号 是表达式 ,不是v指定就是一个字符串常量。不会当做js表达式计算

vue组件的数据流是单向的,只允许父组件向子组件传递数据,不允许组内部的数据向父组件传递数据。否则就很乱,数据会变得不可控。

正确的方式是,要保证数据的变化是可控的,是可跟踪的。推荐的使用方式是:

1,定义一个局部变量,并用prop的值初始化

2.定义一个计算属性,数据来自 属性 prop 的值

属性prop验证

要指定验证规则,使用字符串是不可以的,要使用对象形式的。还可以设置一些可选项。

Vue.component('user-info',{
  props:  {
    name:{
      type:String,
      required:true,
      default:'xiaoming'
    }
  }
});

抄代码

使用立即执行函数。快速构建测试数据。使用for循环构建数据并返回。

老师的搭建界面样式都很6,是因为老师花时间研究Bootstrap了。把一件东西搞熟了,用习惯了,就搞的快了。

案例点:

V-for 是可以传入index的,需要使用括号

v-for= "(item,index) in menues"

避免使用硬编码,维护起来太麻烦。

数据层面和服务器保持一致,可以减少很多判断,减少bug。

关于vue组件化的一些思考:

1.如何把代码抽离成组件?

2.数据是如何传递给组件的?

3.组件之间是如何传递数据的?

4.组件之间的事件是如何传递的?

vue-cli是全新的前端开发方式。从原始的前端快放方式,转变成全新的方式。

上一篇下一篇

猜你喜欢

热点阅读