day 65 vue

Vue介绍

前台框架:angular、react、vue
  vue:有前两大框架优点,摈弃缺点;没有前两个框架健全
  vue优点:中文API、单页面应用、组件化开发、数据双向绑定、虚拟DOM、数据驱动思想(相比DOM驱动)

如何使用Vue

模板:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">

    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {

        }
    })
</script>
</html>

Vue实例

1.el实例

new Vue({
    el: '#app'
})
// 实例与页面挂载点一一对应
// 一个页面中可以出现多个实例对应多个挂载点,挂载点采用的是css3选择器语法,但是只能匹配第一次检索到的结果
// 实例只操作挂载点内部内容
//
html与body标签不能作为挂载点
 

2.data数据

<div id='app'>
    {{ msg }}
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: '数据',
        }
    })
    console.log(app.$data.msg);
    console.log(app.msg);
</script>
<!-- data为插件表达式中的变量提供数据 -->
<!-- data中的数据可以通过Vue实例直接或间接访问-->

3.methods方法

<style>
    .box { background-color: orange }
</style>
<div id='app'>
    <p class="box" v-on:click="pClick">测试</p>
    <p class="box" v-on:mouseover="pOver">测试</p>
</div>
<script>
    var app = new Vue({
        el: '#app',
        methods: {
            pClick () {
                // 点击测试
            },
            pOver () {
                // 悬浮测试
            }
        }
    })
</script>
<!-- 了解v-on:为事件绑定的指令 -->
<!-- methods为事件提供实现体-->
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Vue实例</title>
    <style>
        body {
            user-select: none;
        }
    </style>
</head>
<body>
    <section>
        <div id="d1">
            {{ msg }}
            <p v-on:click="pClick" v-bind:style="pStyle">{{ info }}</p>
        </div>
        <hr>
        <div class="d2">
            {{ }}
        </div>
        <hr>
        <div class="d2">
            {{ }}
        </div>
    </section>
</body>
<script src="js/vue.js"></script>
<script>
    `
    console.log(Vue);
    let app = new Vue({
        el: '#d1',  // 挂载点:vue实例与页面标签建立关联
    });

    new Vue({
        el: '.d2',  // 挂载点采用的是css3选择器语法,但是只能匹配第一次检索到的结果
    });
    `;
    // 总结:
    // 1、通常挂载点都采用id选择器(唯一性)
    // 2、html与body标签不能作为挂载点(组件知识点解释)

    // new Vue({
    //     el: 'body'
    // })
    let app = new Vue({
        el: 'section',
        data: {  // data为挂载点内部提供数据
            msg: 'message',
            info: '信息',
            pStyle: {
                color: 'yellowgreen'
            }
        },
        methods: {
            pClick: function () {
                if (app.pStyle.color !== 'yellowgreen') {
                    app.pStyle.color = 'yellowgreen'
                } else {
                    app.pStyle.color = 'red'
                }
                console.log(app.msg);
                console.log(app.pClick);
                console.log(this.msg);
                console.log(this.pClick);
            }
        }
    });

    // 声明的实例是否用一个变量接收
    // 1、在实例内部不需要,用this就代表当前vue实例本身
    // 2、在实例外部或其他实例内部需要,定义一个变量接收new Vue()产生的实例
    console.log(app.msg)

</script>
</html>

插值表达式

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        <p>{{ msg }}</p>       //msg
        <p>{{ num * 10 }}</p>  //100
        <p>{{ msg + num }}</p> //msg10
        <p>{{ msg[1] }}</p>    //s
        <p>{{ msg.split('') }}</p> //["m","s","g"]
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: 'msg',
            num: 10
        }
    })
</script>
</html>

文本指令

v-text:不能解析html语法的文本,会原样输出
v-html:能解析html语法的文本
v-once:处理的标签的内容只能被解析一次
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        <!--
            文本指令:
            1、{{ }}
            2、v-text:不能解析html语法的文本,会原样输出
            3、v-html:能解析html语法的文本
            4、v-once:处理的标签的内容只能被解析一次
        -->
        <p>{{ msg.split('') }}</p>   //[ "m", "e", "s", "s", "a", "g", "e" ]
        <p v-text="msg.split('')">12345</p>  //[ "m", "e", "s", "s", "a", "g", "e" ]
        <p v-text="info"></p>  //<i>info</i>
        <p v-html="info"></p>  //info(斜体 )

        <hr>
        <p v-on:click="pClick" v-once>{{ msg + info }}</p>  //message<i>info</i>
        <p>{{ msg }}</p>  //信息
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: 'message',
            info: '<i>info</i>'
        },
        methods: {
            pClick: function () {
                this.msg = '信息'
            }
        }
    })
</script>
</html>

面向对象js

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>面向对象js</title>
</head>
<body>
    <h1>面向对象js</h1>
</body>
<script>
    // undefined、null、string、number、boolean、object(Array)、function
    // var、let、const、不写

    // object(Array)、function

    function f1() {
        console.log('f1 run')
    }
    f1();  //f1 run


    // 构造函数 == 类
    function F2(name) {
        this.name = name;
        this.eat = function (food) {
            console.log(this.name + '' + food);
        }
    }
    let ff1 = new F2("Bob");
    console.log(ff1.name);  //f1 Bob

    let ff2 = new F2("Tom");
    console.log(ff2.name);  //f1 Tom

    ff1.eat('饺子');  //Bob在饺子
    ff2.eat('sao子面');  //Tom在sao子面


    let obj = {
        name: 'Jerry',
        // eat: function (food) {
        //     console.log(this.name + '在' + food)
        // },
        eat(food) {  // 方法的语法
            console.log(this.name + '' + food)
        }
    };
    console.log(obj.name);  //Jerry
    obj.eat('hotdog');  //  Jerry在hotdog
</script>
</html>

js的函数

var  let  count  d

    function f() {
        d = 40; // 全局变量
    }

    f();


    console.log(d);

    const c = 30;  // 常量
    // c = 20 常量不能被修改
    console.log(c);


    if (1) {
        var a = 10;  //可以重复定义
        let b = 20;  // let、const定义的变量不能重复定义,且具备块级作用域(只要有大括号,出了大括号就用不了了)
    }
    console.log(a);
    // console.log(b);

    for (let i = 0; i < 5; i++) {
        console.log(i);
    }
    // console.log(i);
    // console.log(i);
    // console.log(i);

function、箭头函数、方法

箭头函数

    // 如果箭头函数没有函数体,只有返回值
    let f4 = (n1, n2) => n1 + n2;
    let res = f4(10, 25);
    console.log(res);  //35

    // 如果箭头函数参数列表只有一个,可以省略(),如果没有参数,或者参数大于1个,必须写()
    let f5 = num => num * 10;
    res = f5(10);
    console.log(res);  //100

猜你喜欢

转载自www.cnblogs.com/fjn839199790/p/12051415.html
65