vue文档

vue 的读音 view

vue到底是什么?

一个mvvm框架

vue和angular的区别:

vue:简单容易上手 指令以v-开头 个人维护的项目 比较小巧适合移动端的项目
angular:指令以ng-开头 由谷歌维护 所有属性和方法都挂在$scope身上 适合pc端的项目

共同点:不兼容低版本浏览器

常见的指令

指令就是扩展html标签功能属性
v-model 一般用于表单元素 双向数据绑定
v-for=“value in arr” 在1.0版本中可以直使用$index
比如

      $(function(){
        <!--在1.0版本中-->
          <ul>
               <li v-for="value in arr">
                   {{value}}  {{$index}}
               </li>
           </ul>
          v-on:click="deletePerson($index)"//这个仅仅适用于1.0版本,不要采坑了同学们
        <!--在2.0版本中-->
               <ul>
               <li v-for="(value,index) in arr">
                   {{value}}  {{index}}
               </li>
           </ul>
              v-on:click="deletePerson(index)"

                      })

在1.0版本中 index 是1 2 3 ,key是a b c
在2.0版本中 v-for的第二个参数是a b c ,第三个参数是1 2 3
v-on:click=“函数” 函数放在methods里边 简写:@click=“函数”
v-show=“true/false” 显示隐藏
@click(enent,12) 事件对象
阻止事件冒泡
a).ev.cancelBubble=true;
b).@click.stop
阻止默认事件行为
a):ev.preventDefault();
b):@contextmenu.prevent
键盘事件
@keydown $event ev.keyCode
@keyup
常用键
回车a):@keyup.13; 2):@key.enter
上 下 左 右
@keyup/keydown.left
@keyup/keydown.right
@keyup/keydown.up
@keyup/keydown.down

属性

<img v-bind:src="url" alt="">
用src图片也会出来 但是在控制台上边会报404的错误
v-bind:src 的简写是 :src
还有::width :title.....

class和style
class:
:class='' v-bind:class=''
:style='' v-bind:style=''
a、:class="[red,blue]" red blue是data里边的数据
b、:class="{red:true,blue:true}" red blue是data里边的数据
c、:class="json"data{json{red:true,blue:true}}


style:
:style="[c,b]"
注意使用复合属性是必须采用驼峰命名方式
:style="json"data{json{ color:'red',backgroundColor:'green'}}

模板

{{msg}} 数据更新模板变化
{{*msg}} 数据只绑定一次
{{{msg}} html转义输出

过滤器

交互

如果vue想做交互 必须引入:vue-resouce
get:
获取普通文本数据

         methods:{  //添加方法
                get:function(){
                this.$http.get('a.txt').then(function(res){
                    alert(res.data);
                    },function(add){
                    alert(add.status);
                    })
                }
            }

给服务器发送数据:

   methods:{  //添加方法
                get:function(){
                    this.$http.get('get.php',{
                        a:1,
                        b:2
                    }).then(function(res){
                alert(res.data);
                    },function(add){
                    alert(add.status);
                    })
                }

post:

                    get:function(){
                    this.$http.post('get.php',{
                        a:1,
                        b:2
                    },{
                        emulateJSON:true
                    }).then(function(res){
                alert(res.data);
                    },function(add){
                    alert(add.status);
                    })
                }

jsonp

//jsonp的请求
                get:function(){
                    this.$http.jsonp('https://sp0.baidu.com/5alFazu8AA54nxGKo9WTAnF6hhy/su',{
                        word:'a'
                    },{
                        jsonp:'cb' //callback   默认名字就是“callback”
                    }).then(function(res){
                        alert(res.data.s);
                    },function(res){
                        alert(res.status);
                    });
                }

vue的生存周期

钩子函数:1.0版本

  • created函数在实例已经创建完之后执行
  • beforeCompile 编译之前
  • complie 编译之后
  • redy 插入到文档中
  • beforeDestroy 销毁之前
  • destroyed 销毁之后

钩子函数:2.0版本

  • created函数在实例已经创建完之后执行
  • beforeCompile 编译之前
  • complie 编译之后
  • redy 插入到文档中

花括号闪烁的问题
v-cloak 用在比较大的段落
v-text 用在{{v-text="msg"}}内
v-html 用在{{v-html="msg"}}内 转义
写在style里边
[v-cloak]{diaplay:none}


计算属性的使用
1)

computed:{  //默认为get
    b:function(){   //b是属性不是函数
      return 值   //通过return返回值
    }
  }

2)

  computed:{
    b:{
            get:function(){
                return this.a+2
            },
            set:function(val){   //赋值
                  this.a=val
            }
       }
  }

vue简单实例
vm.el ==元素 vm.data ==data
vm.$mount ==el 手动挂载程序


在使用v-for循环时会有重复的数据 在控制台会报错 可以时候track-by="$index"


数据配合使用过滤选择器

  • limitBy
    limitBy 限制几个
    limitBy 限制几个
    limitBy 限制几个
  • filterBy
    filterBy 过滤数据
    filterBy 谁
  • orderBy
    orderBy 1/-1 1正序 2倒序
  • 自定义过滤器
    vue.fileter(name,function(){
    })
    *自定义指令
    v-red
    vue.directive(red,function(){
    this.el.style.background='red'
    })
  • 自定义元素指令 (用处不大)
    <zns-red></zns-red>
    Vue.elementDirective('zns-red',{
    bind:function(){
    this.el.style.background='red';
    }
    })
  • 监听数据的变化 vm.watch(name,function);//浅度监视 vm.watch(name,function,{deep:true});//深度监视

动画

  • 第一种
    <div transtion="fade"></div>
    <style>
    fade-transtion{
    transtion:1s all case;
    };
    fade-enter{
    opacity:0;
    };
    fade-leave{
    opacity:0;
    transform:translateX(200px);
    }

</style>

  • 第二种

      transitions:{
           fade:{
              enterClass:'zoomInLeft',
              enterClass:'zoomInLeft',
          }
      }
    

组件
定义组件

  • 全局组件
    <aaa></aaa>

       var Aaa=Vue.extend
          ({
              template:'<h3>我是标题3</h3>'
            });
            Vue.component('aaa',Aaa)
    
  • 组件里边放数据:data必须是函数形式,函数必须返回一个对象(json)

       Vue.component('aaa',{
              data:function(){
                  return {
                      msg:'我是函数'
                  }
              },
              methods:{
                  change:function(){
                      this.msg="change"
                  }
              },
              template:'<h3 @click="change">{{msg}}</h3>'
          });
    
  • 局部组件 放到某个组件的内部

    $(function()
      {
          var Aaa = Vue.extend
          ({
            template:'<h3>{{msg}}</h3>',
            data:function(){
                return {msg:'welcom'}
            }
          });
          var vm =new Vue
          ({
              el:'#box',   //选择器
              data:
                  {     //数据
    
                  },
              methods:
                  {  //添加方法
    
                  },
              components:  //局部组件
                  {
                  'aaa':Aaa
                  }
          });
      });
    

第二种定义组件的方式

  Vue.component('aaa',{
            template:'<strong>{{msg}}</strong>',
            data:function(){
              return {
                  msg:'第二种组件方式'
              }
    }

        })

第三种定义组件的方式

var vm =new Vue
        ({
            el:'#box',   //选择器
            data:
                {     //数据

                },
            methods:
                {  //添加方法

                },
            components:{
                'aaa':{
                    data:function(){
                        return {
                        msg:'我想大声告诉你  你一直在我世界里~~'}
                    },
                    methods:{
                       change:function(){
                           this.msg='太多的过去难割舍、难忘记。'
                       }
                    },
                    template:'<h2 @click="change">{{msg}}</h2>'
                }
            }
        });

第四种 把组件单独放在某个位置

  • <script type="x-template" id="aaa">
      <h2 @click="change">{{msg}}</h2>
    </script>
    
  •  <template id="bbb">
      <div>
      <h2>1111</h2>
      <ul>
          <li v-for="val in arr">
              {{val}}
          </li>
      </ul>
      </div>
    </template>
    

动态组件

   <div id="box">
    <input type="button" @click="a='aaa'" value="a组件">
    <input type="button" @click="a='bbb'" value="b组件">
    <component :is="a"></component>
</div>

  <script>
    $(function()
    {

        var vm =new Vue
        ({
            el:'#box',   //选择器
            data:{
                a:''
            },
            components:{
                'aaa':{
                    template:'<h2>我是aaa组件</h2>'
                },
        'bbb':{
            template:'<h2>我是bbb组件</h2>'
        }
            }
        });

    });
</script>

vue-devtools vue浏览器的调试工具


组件数据的传递

1. 子组件获取父组件的数据:

  • 子组件在props中创建一个属性,用以 接收父组件传过来的值

  • 父组件中注册子组件

  • 在子组件标签中添加子组件props中创建的属性

  • 把需要传给子组件的值赋值给该属性
    1. 父组件获取子组件的数据:通过vm.@emit(事件名,数据)发射数据,通过@接收数据

  • 子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件

  • 将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法

  • 在父组件中注册子组件并在子组件标签上绑定对自定义事件的监听


slot:位置 作用:占位置

  <body>
<div id="box">
<aaa>
    <ul slot="ul-slot">
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ul>
    <ol slot="ol-slot">
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ol>
</aaa>
</div>

<template id="aaa">
<div>
<p>111</p>
    <slot name="ol-slot">hhh</slot>
    <slot name="ul-slot">hhh</slot>
<p>222</p>
</div>
</template>

</body>

vue-SPA应用 ,单页面的应用

vue-router 路由 :根据不同url地址,出现不同效果

vue-loader 基于webpack 解析.vue文件,.vue文件是放置vue组件代码 html css js

webpack 模块加载器,一切东西都是模块

vue-cli的及基本使用流程

1.npm install vue-cli -g //安装vue的命令环境
验证安装是否ok? vue-version
2.生成项目模板
vue

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容