el:元素的挂载位置(值可以是CSS选择器或者DOM元素)
data 模型数据(值是一个对象)
methods:{} 方法区: 里面放的函数
computed:{}计算属性区:,计算属性定义在computed里面
watch:{} 监听器: 数据变化时执行异步或者开销较大的操作,数据一旦发生变化就通知监听器所绑定的方法
mounted: function(){}钩子函数: 该生命周期钩子函数被触发的时候,模版已经可以使用,
一般此事用于获取后台数据,然后把数据填充到模版
components:{} 局部组件 ,放到components:{}中的组建只有本类中可以使用
将数据填充到HTML标签中
插值表达式指出基本的计算操作
语法: {{}}
<body>
     <div id="app">
<!--         插值表达式 ,页面显示data里面msg里的值Hello Vue-->
<!--         插值表达式还支持下面的一些基本计算和数据拼接-->
         <div>{{msg}}</div>
         <div>{{1+2}}</div>
         <div>{{msg+‘----‘+123}}</div>
     </div>
     <script src="js/vue.js"></script>
     <script>
        var vm=  new Vue({
              el:‘#app‘,
              data:{
                  msg:‘Hello Vue‘
              }
          })
     </script>
</body>
Push() 在数组尾部添加新元素。(尾部新增)
Pop() 取出数组尾部元素。(尾部取出)
Shift() 取出数组头部元素。(头部取出)
Unshift() 在数组头部添加新元素。(头部新增)
Splice() 向数组中添加,删除 元素,然后返回被删除的元素
Sort() 对数组的元素进行排序. 升序
Reverse() 对数组的元素进行排序. 降序
Filter(). 通过检查指定数组中符合条件的所有元素
Concat() 连接两个或更多的数组,并返回结果
Slice() 从已有的数组中返回选定的元素
Some(). 用于检测数组中的元素是否满足指定条件,如果满足,返回true,剩下的不会执行
Vue.set(vm.items,indexOfltem,newValue)
vm.$set(vm.items,indexOfltem,newValue) 和前面的小效果一样,只是写法不同
1?? 参数一表示要处理的数组名称
2?? 参数二表示要处理的数组索引
3?? 参数三表示要处理的数组的值
<body>
<div id="app">
    <ul>
        <li v-for="item in list">{{item}}</li>
    </ul>
</div>
<script src="../../js/vue.js"></script>
<script>
?
    var vm = new Vue({
        el: ‘#app‘,
        data: {
            list:["apple","orange","banana"]
        },
    })
    //把数组中第二个数据改成茄子
    vm.$set(vm.list,1,"茄子")
</script>
</body>
插值表达式
指令
事件绑定
属性绑定
样式绑定
分支循环结构
v-text 填充纯文本
1?? 相比插值表达式更加简洁
V-html 填充HTML片段
1?? 存在安全问题
2?? 本网站内部数据可以使用,来自第三方的数据不可以用
v-pre 填充原始信息
1?? 显示原始信息,跳过编译过程
     <div>v-html="msg"</div>  <!--和插值表达式一样页面显示的是data里msg的值-->
         <div>v-text=‘msg‘</div><!--和插值表达式一样页面显示的是data里msg的值,不安全!-->
         <div>v-pre="msg"</div><!--页面显示的是msg,而不是msg的值-->
如何理解响应式
1?? html5中的响应式(屏幕尺寸的变化导致样式的变化)
2?? 数据的响应式(数据的变化导致页面内容的变化)
什么是数据绑定
1?? 数据绑定: 将数据填充到标签中
2?? vue是双向绑定,用v-model绑定可以实现
v-once只编译一次
1?? 实现内容之后不再具有响应式功能
自定义指令用法
<input type="text" v-focus>
v-on指令用法
<input type=‘‘button" v-on:click=‘‘‘‘/>
V-on. 缩写: @
<input type=‘‘button" @click=‘‘‘‘/>
直接绑定函数名称,无参数,默认有一个事件对象
<button @click="say">Hello</button>
调用函数(有参数)
<button @click="say(123,333,$event)">Hello</button>
<body>
     <div id="app">
         <div>{{num}}</div>
<!--         直接调用,默认会有事件函数-->
        <button @click="handle">点击1</button>
<!--         可以传参数,$event事件函数要手动添加,必须在最后一个-->
         <button @click="handle(123,456,$event)">点击2</button>
?
     </div>
     <script src="js/vue.js"></script>
     <script>
        var vm=  new Vue({
              el:‘#app‘,
              data:{
                  num:0,
              },
            methods:{
                /*
                  事件绑定-参数传递
                  1。如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数
                 *2。如果时间绑定函数调用,(传递参数),那么事件对象必须在最后一个
                  3。$event事件函数是固定写法
                 */
                  handle:function (p,k,event) {
                     //这里的参数就是获取到的参数123,和456
                      console.log(p,k)
                      //$event是事件对象,
                      //$event.target则指的是事件触发的目标,即哪一个元素触发了事件,这将直接获取该dom元素
                      console.log(event.target)
?
                      // 这里的this是Vue的实例对象
                    this.num++;
                  }
            }
          })
     </script>
</body>
.stop阻止冒泡
.prevent阻止默认行为
.enter 回车键
<input v-on :keyup.enter="submit">
.delete 删除键
<input v-on :keyup.delete="handle">
实现逻辑
1.先绑定input a,input b. ,input 结果
2.data里面定义a、b、结果三个熟悉
然后点击按钮触发事件,在方法里写相加的逻辑
<body>
<div id="app">
    <h1>简易计算机</h1>
    <div>
        <span>数值A:</span>
        <span><!--绑定a-->
                  <input type="text" v-model="a">
              </span>
    </div>
    <div>
        <span>数值B:</span>
        <span><!--绑定b-->
                  <input type="text" v-model="b">
              </span>
    </div>
    <div>
        <button @click="handel">计算</button>
    </div>
    <div>
        <span>计算结果</span>
        <!--绑定result-->
        <span v-text="result"></span>
    </div>
</div>
<script src="js/vue.js"></script>
<script >
    var vm=  new Vue({
        el:‘#app‘,
        data:{
           a:‘‘,
            b:‘‘,
            result:‘‘
        },
        methods:{
            handel:function () {
                 //实现计算逻辑
                 // parseInt(this.a)转换成int  ,不转换的话是就会拼接
                this.result= parseInt(this.a)+ parseInt(this.b);
            }
?
        }
    })
</script>
</body>
v-bind指令用法
<a v-bind:href="url"></a>
缩写形式
<a :href="url"></a>
<body>
<div id="app">
<!--    v-bind是属性绑定  ,简写成 :-->
<!--    现在就是绑定了data里面的url的地址-->
    <a :href="url">跳转</a>
    <button @click="handle">切换</button>
</div>
<script src="js/vue.js"></script>
<script >
    var vm=  new Vue({
        el:‘#app‘,
        data:{
           url:‘http://www.baidu.com‘
        },
        methods:{
            handle:function () {
               //修改URL的地址
                this.url=‘http://itcast.cn‘;
            }
?
        }
    })
</script>
</body>
v-model其实就是v-bind和v-on组合起来的
   <input v-bind:value="msg" v-on:input="msg=$event.target.value">
对象语法
<div v-bind:class="{active: isActive}"></div>
数组语法
<div v-bind:class="{a,b}"></div>
对象语法
<body>
<div id="app">
<!--       //内联样式Style-->
       <div v-bind:style="{border:borderStyle1,width:widthStyle,height:heightStyle}"></div>
<!--        //内联绑定对象-->
        <div v-bind:style="objStyles"></div>
?
        <button v-on:click="handle">切换</button>
</div>
<script src="js/vue.js"></script>
<script >
    var vm=  new Vue({
        el:‘#app‘,
        data:{
          borderStyle1:"1px solid blue",
            widthStyle:"100px",
            heightStyle:"200px",
?
            objStyles:{  /*对象*/
              border:"1px solid green",
                width:"200px",
                height:"100px"
            }
        },
        methods:{
            handle:function () {
                //点击事件之后可以把高度切换成100px
                 this.heightStyle=‘100px‘;
                 //点击事件之后可以把对象里面的宽度切换成30px
                 this.objStyles.width="30px";
            }
        }
    })
</script>
</body>
v-if
v-else
V-else-if
V-show
v-for遍历数组
<li v-for="item in list">{{item}}</li>
表单操作
计算属性
过滤器
监听器
生命周期
Input 单行文本
textarea 多行文本
select 下拉多选
Radio 单选框
Checkbox 多选框
<body>
<div id="app">
    <form>
        <!--        input单行表单-->
        <div>
            <span>姓名:</span>
            <span>
<!--                v-model默认是双向绑定-->
                <input type="text" v-model="name1">
            </span>
        </div>
        <!--        单选按钮-->
        <div>
            <span>性别</span>
            <span>
              <!--        v-model绑定-->
            <input type="radio" id="male" value="1" v-model="gender">
            <label for="male">男</label>
            <input type="radio" id="female" value="2" v-model="gender">
            <label for="female"></label>
            </span>
        </div>
        <!--       多选按钮 -->
        <div>
            <span>爱好</span>
            <input type="checkbox" id="ball" value="1" v-model="aihao">
            <label for="ball">篮球</label>
            <input type="checkbox" id="pai" value="2" v-model="aihao">
            <label for="pai">排球</label>
            <input type="checkbox" id="pingpang" value="3" v-model="aihao">
            <label for="pingpang">乒乓球</label>
        </div>
        <!--     下拉框   -->
        <div>
            <span>职业</span>
            <select v-model="zhiye">
                <option value="0">请选择职业</option>
                <option value="1">教师</option>
                <option value="2">程序员</option>
                <option value="3">电焊工