组件(0)

现在前端大谈组件化、模块化、工程化。今天就讲讲vue组件的认识与开发。组件化也是vue最强大的功能之一。

一、组件开发语法:

1、创建组件构造器

        //创建组件构造器
        var constructor = Vue.extend({
            template:‘<div>hello vue,this is my first component1</div>‘
        });

2、全局注册组件

         //注册组件 全局注册
         Vue.component("cyg-parent",constructor);

3、组件注册语法糖

/**********祖册组件语法糖*********/
        //以上两步可以简写成这样
        Vue.component("my-component",{
            template:"<p>test,hi i am a component</p>"
        })
        new Vue({
            el:‘#app2‘
        })    //直接在app2的渲染内引用my-component组件

4、全局注册和局部注册

Vue.component是全局注册。在任何vue实例下都能使用。要想实现局部注册。利用components属性实现局部注册

        Vue.component("my-component",{
            template:"<p>test,hi i am a component</p>"
        })
        new Vue({
            el:‘#app2‘,
                     //part-component局部注册#app2下面。#app1无法调用会报编译错误
            components:{
                ‘part-component‘: {
                    template:‘<p>hello this is part component</p>‘
                }
            }
        })
        //使用组件  注意:这里的代码的先后顺序,写在最上面是不行的
        new Vue({
            el:‘#app1‘

        })                
<div id="app1">
        <my-component></my-component>
        <part-component></part-component>
</div>
    <div id="app2">
        <my-component></my-component>
        <part-component></part-component>
    </div>

5、父子组件

组件当中可以存在更多的组件这样就形成了父子组件。由于组件的作用域是孤立的。那么传输数据是怎样的呢?简而言之:参数往下传(props),事件往上传(emit)

props:

        Vue.component("my-component",{
            data:function(){
                return {
                    msg:"cygnet..."
                }
            },
            template:"<p>test,hi i am a component {{ msg }}<span><child-component :parentMsg=‘msg‘></child-component></span></p>",
            components:{
                ‘child-component‘: {
                    props:[‘parentMsg‘],
                    template:‘<p>hello this is child component {{ parentMsg }}</p>‘
                }
            }
        })
        new Vue({
            el:‘#app2‘
        })

emit:

Vue.component(‘button-counter‘, {
  template: ‘<button @click="increment">{{ counter }}</button>‘,
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    increment: function () {
      this.counter += 1;
      //侦听事件使用 $on(eventName)
      //定义和触发事件使用 $emit(eventName)
      this.$emit(‘increment‘)
    }
  },
})
new Vue({
  el: ‘#app2‘,
  data: {
    total: 0
  },
  methods: {
    incrementTotal: function () {
      this.total += 1
    }
  }
})<div id="app2">
{{ total }}
   <button-counter v-on:increment="incrementTotal"></button-counter>   <button-counter v-on:increment="incrementTotal"></button-counter></div>

6、静态组件

利用v-once指令特性使其成为静态组件

v-once:只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能

var vm = new Vue({ el: ‘#parent‘,data:{ msg:‘cygnet‘,dd:"11"} })
vm.dd = "22";
//写一个例子说明v-once指令
<div id="parent">
<!-- 有子元素 -->
<div v-once>
  <p>{{msg}}</p>
  {{ dd }}
</div>
  {{ dd }}
</div>

Vue.component(‘terms-of-service‘, {
  template: ‘    <div v-once>      <h1>Terms of Service</h1>      ... a lot of static content ...    </div>  ‘
})

7.异步组件、动态组件。递归组件等等。。。以后再去了解吧,现在脑中有一个概念就行了。

时间: 2024-11-06 13:24:08

组件(0)的相关文章

Qt——组件位置随窗口变化

当我们用Qt Designer设计界面时,有时会面临这样一个问题:需要在窗口指定位置放置组件,并且当窗口位置大小改变时,该组件相对其父对象的位置是不变的,如下面两幅图所示 ,首先看上面这幅图,注意button的位置,我们想让button一直停留在该位置,我们刚开始做的可能是在designer中将button直接拖到该位置,编译运行后正是我们想要的结果,但是当我们拖动窗口,使窗口尺寸变化后,发现button位置改变了,如下面那副图所示.发生这种情况的原因很简单,直接拖放button到界面中,不加任

EasyUI系列学习(六)-Tooltip(提示框)

一.创建组件 0.Tooltip不依赖其他组件 1.使用class加载 <a href="#" class="easyui-tooltip" title="这是一个提示信息">Hover me</a> 2.使用js加载 <a href="#" id="tBox" title="这是一个提示信息">Hover me</a> <scrip

EasyUI系列学习(二)-Draggable(拖动)

一.创建拖动组件 0.Draggable组件不依赖于其他组件 1.使用标签创建 <div class="easyui-draggable" id="box" style="width: 200px; height: 100px; left: 100px; background: orange">拖动组件</div> 2.使用js创建 <div id="box" style="width:

在Ubuntu14.04上OpenStack Juno安装部署

在Ubuntu14.04上OpenStack Juno安装部署 0 安装方式 0.1 安装方式 安装方式 说明 目标 备注 单结点 一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例. 这种配置只为尝试Nova,或者为了开发目的进行安装.   1控制节点+N个计算节点 一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova-compute.所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈. 这种配

Qt布局管理器(详解)

1.存在的问题 (1)目前的GUI开发方式:绝对定位 --直接在像素级指定各个组件的位置和大小 void QWidget::move(int x, int y) void QWidget::resize(int w, int h) (2)问题 --组件位置和大小无法自适应父窗口的变化 2.布局管理器 (1)解决方案:布局管理器 --提供相关的类对界面组件进行布局管理 @1:能够自动排列窗口中的界面组件 @2:窗口变化后自动更新界面组件的大小 (2)QLayout是Qt中布局管理器的抽象基类 (3

使用MEF应用IOC(依赖倒置)

MVC实用架构设计(二)——使用MEF应用IOC(依赖倒置) 前言 在<上篇>中,基本的项目结构已经搭建起来了,但是有个问题,层与层之间虽然使用了接口进行隔离,但实例化接口的时候,还引入了接口实现类的依赖.如下图: 面向接口编程,Controller应该只依赖于站点业务层的接口,而不能依赖于具体的实现,否则,就违背了在层之间设置接口的初衷了. 另外,如果上层只依赖于下层的接口,在做单元测试的时候,就可以用Moq,Fakes等Mock工具来按实际需求来模拟接口的实现,就可以灵活的控制接口的返回值

任务栏窗口列表

var I: integer; spDisp: IDispatch; IE1: IWebBrowser2; ShellWindow: IShellWindows;begin ListBox1.clear; ShellWindow := CoShellWindows.Create; for I := 0 to ShellWindow.Count - 1 do begin try spDisp := ShellWindow.Item(I); if (spDisp <> nil) then begi

鬃嘴释怀说太多就成真不了。

子阻撞砖奏尊仔籽着 释怀说太多就成真不了. http://passport.baidu.com/?business&un=vip&un=%E5%A4%A9%E6%B0%B4%E4%B8%8A%E9%97%A8%E8%BF%99%E5%B0%8F%E5%A7%90#0 http://passport.baidu.com/?business&un=vip&un=%E7%99%BD%E9%93%B6%E4%B8%8A%E9%97%A8%E8%BF%99%E5%B0%8F%E5%A

澜星粘鼐贩逊耐盼系甭妊倏纪傲傲sdfghjk

http://passport.baidu.com/?business&un=R&un=%E5%A4%A7%E5%AE%81%E6%A1%91%E6%8B%BF%E9%80%9A%E5%B0%8F%E5%A7%90#0 http://passport.baidu.com/?business&un=R&un=%E4%B9%A1%E5%AE%81%E6%A1%91%E6%8B%BF%E9%80%9A%E5%B0%8F%E5%A7%90#0 http://passport.bai

2008 SCI 影响因子(Impact Factor)

Excel download 期刊名缩写 影响因子 ISSN号 CA-CANCER J CLIN 74.575 0007-9235 NEW ENGL J MED 50.017 0028-4793 ANNU REV IMMUNOL 41.059 0732-0582 NAT REV MOL CELL BIO 35.423 1471-0072 PHYSIOL REV 35.000 0031-9333 REV MOD PHYS 33.985 0034-6861 JAMA-J AM MED ASSOC 3