初始Vue

一、基础语法

用vue首先下载vue,可到官网下载

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <!--模板语法-->
    <h2>{{ mag }}</h2>
    <h2 style="color: red">{{ person }}</h2>
    <h3>{{ person.name }}</h3>
    <h3 style="color: blue">{{ mag2 }}</h3>
    <h3>{{ 1+1 }}</h3>
    <h4>{{ {'name':'alex'} }}</h4>
    <h2>{{ 1>2? '真的': '假的' }}</h2>
    <p>{{ totalScore }}</p>
    <!--渲染标签要用到系统指令-->
    <div>{{ text }}</div>
    <div v-html="text"></div>
</div>
<!--1,引vue-->
<script src="vue.js"></script>
<script>
    // 2实例化对象
    new Vue({
        //当前对象绑定的根元素
        el: "#app",
        //    数据属性
        data: {
            mag: "我是mag",
            python: 88,
            linux: 76,
            person: {
                name: "zwq"
            },
            mag2: "hello vue",
            //    标签数据
            text: '<h2>yuan</h2>'
        },
     计算属性,可以不用在body里做太多的逻辑 computed: { totalScore: function () { return this.python + this.linux; } } }) </script> </body> </html>

  

二、指令系统

//常用
v-text   将数据解释为普通文本
v-html   可以输出真正的 HTML 标签也可以将数据解释为文本
v-if    “真正”的条件渲染
v-show   基于 CSS 进行切换,display:none。
v-for   //保存数组或者对象 格式
v-for = '(item,index) in menuList'
v-for = '(value,key) in object'
   //item指的是数组中每项元素

v-bind   可以绑定标签中任何属性  
     简写:v-bind:src  等价于   :src

v-on    可以监听 js中所有事件
   简写:v-on:click 等价于 @click

表单输入绑定 v-model 双向数据绑定
   可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。
 它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

v-if与v-show的区别

v-if 是“真正”的条件渲染,在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

v-show 不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

watch  

- 可以监听多个值(只要数据修改,就触发重新计算)
- 页面一加载就计算

            watch: {
                python: function (value, oldvalue) {
                    console.log("有人在修改成绩");
                    console.log(value, oldvalue);
                }
            }  

懒加载  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--第一步:引入vue,Vue function-->
    <script src="./statics/vue.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box1 {
            color: red;
        }
        .box2 {
            color: green;
        }
    </style>
</head>
<body>
    <!--第二步:声明领地(Vue实例的作用范围)-->
   <div id="app">
       <table border="1">
           <thead>
               <tr>
                   <th>科目</th>
                   <th>成绩</th>
               </tr>
           </thead>
           <tbody>
               <tr>
                   <td>Python</td>
                   <td><input name="python" type="text" v-model.number.lazy="python"></td>
               </tr>
               <tr>
                   <td>Linux</td>
                   <td><input name="python" type="text" v-model.number.lazy="linux"></td>
               </tr>
               <tr>
                   <td>Go</td>
                   <td>
                       <input name="python" type="text" v-model.number.lazy="go">
                   </td>
               </tr>
               <tr>
                   <td>总成绩</td>
                   <td>{{ totalScore }}</td>
               </tr>
           </tbody>
       </table>
   </div>

    <script>
        // 第三步:创建一个对象(Vue对象)
        new Vue({
            // 第四步:查找领地(作用域)
            el: "#app",
            data: {
                python: 90,
                linux: 87,
                go: 78
            },
            computed: {
                totalScore: function () {
                    return this.python + this.linux + this.go;
                }
            },
            watch: {
                python: function (value, oldvalue) {
                    console.log("有人在修改成绩");
                    console.log(value, oldvalue);
                }
            }
        })
    </script>
</body>
</html>

  

  

 

posted @ 2019-01-01 17:47  咖啡·  阅读(145)  评论(0编辑  收藏  举报