Vue前端框架(JavaScript框架)

web应用不管是csshtml还是js都寄生于浏览器,所有与硬件内存交互的都是浏览器,如果浏览器卡了,js的优化做得再好也没用

Vue是做了底层优化的,可以和内存打交道,有缓存

 

Vue优点:

单页面:高效,流量低,i/o低,运行效率高

虚拟DOM:页面缓存

数据的双向绑定

数据驱动:从数据出发,不是从DOM出发

 

Vue安装:

https://cn.vuejs.org/

进入官网点学习》教程》安装》点开开发版本》直接复制下来存为js文件》用script引入

 

 

 

 

 

Vue简单使用

 

<!DOCTYPE html><html><head>

    <meta charset="UTF-8">

    <title>vue初识</title></head><body><div id="app">

    <!-- {{ vue变量 }} 插值表达式 -->

    <h1>{{ h1_msg }}</h1>

    <h2>{{ h2_msg }}</h2></div></body><script src="js/vue.js"></script><script>

    new Vue({

        el: '#app',  // 挂载点        data: {  // 为挂载点的页面结构提高数据            h1_msg: 'h1的内容',

            h2_msg: 'h2的内容',

        }

    })</script></html>

 {{ h1_msg }}       相当于是一个变量,

h1_msg: 'h1的内容'        相当于给变量赋值

el:'#app'           只有idapp的标签里的{{}}才能被识别为变量

data:{     }         在这里面给变量赋值

(注意,只写变量不赋值,前端会报错,前端页面能刷出来,没有赋值的变量显示不出来,相当于没写;

想不报错就直接赋值''

注意定义变量和赋值的时候不能给变量打引号,比如 {{ 'h1_msg' }}'h1_msg': 'h1的内容' ,这样写是不会有效果的

 

 Vue完成简单事件(函数变量)

 


<div id="app">
    <h1 v-on:click="clickAction">h1的内容是{{ msg }}</h1>
</div>
</body>
<script src="js/vue.js"></script>

<script>
    new Vue({
        el: '#app',
        data: {
            msg: 'vue渲染的内容'
        },
        methods: {  // 为挂载点提供事件的
            clickAction: function () {
                alert(123)
            }
        }
    })
</script>

Vue操作简单样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<div  class="main">
    <h1>{{h1标签里的变量}}sfgsdfgsdf{{x}}{{aaaaaaaaaaa}}</h1>
    <h2>{{h2标签}}</h2>
    <h1 v-on:click="clickAction" v-bind:style="v_style"> alert框 </h1>
</div>  #这里v_style就是一个变量了,是变量就需要在下面的data里面给他赋值,可以给它添多个样式,所以值用字典形式
我们可以把clickAction当成一个事件(函数)变量,v_style当成一个样式变量

</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el:'.main',
        data:{
            h1标签里的变量:'h1变量值',
            x:'nbsp',
            v_style:{
                color:'red'
            }
        },
        methods:{
           clickAction :function () {

               this.v_style.color = 'green'
           }
        }
    });
</script>
</html>

1.vue通过 v-* 指令来控制标签
2.vue通过 变量 来驱动页面

 

 指令

 文本指令

<div id="app">
    <!-- 插值表达式就是 v-text的简写 -->
    <p>{{ msg1 }}</p>##可以在标签里面加内容
    <p v-text="msg2"></p> ##在标签里面写内容是无效的,比如<p>adadas<p>是显示不出来的   
    只会显示<b>**msg2**</b>
    <p v-html="msg3"></p><!-- 可以解析html标签 -->
    
    <!-- 必须赋初值,渲染的结果永远不会发生改变 -->
    <p v-once="msg3"  v-on:mouseover="action">{{ msg3 }}</p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg1: '**msg1**',
            msg2: '<b>**msg2**</b>',
            msg3: '<b>**msg3**</b>',
        },
        methods: {
            action: function () {
                // var msg = this.$data.msg4;
                this.msg3 = '<i>**new msg3**</i>'
            }
        }
    })
</script>

事件指令

 如果有很多个相同或类似的变量,我们不可能一个一个赋值,我们就把他们的值放到一个容器里

<div id="app">
    <!-- v-on:事件名="函数名"  可以简写为 @事件名="函数名"  (v-on: => @)-->
    <p v-on:click="action1">{{ msgs[0] }}</p>
    <p @click="action2">{{ msgs[1] }}</p>

    <!-- 事件的传参 -->
    <ul>
        <li @click="liAction(100)">列表项1</li>
        <li @click="liAction(200)">列表项2</li>
        <li @click="liAction(300)">列表项3</li>
    </ul>

    <!-- 鼠标事件的对象:直接写函数名,默认将鼠标事件对象传入 -->
    <div @click="func1">func1</div>
    <!-- 鼠标事件的对象:一旦添加(),就必须手动传参,$event就代表鼠标事件对象 -->
    <div @click="func2($event, 'abc')">func2</div>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msgs: ['11111', '22222']
        },
        methods: {
            action1: function () {
                alert(this.msgs[0])
            },
            action2: function () {
                alert(this.msgs[1])
            },
            liAction: function (num, msg) {
                console.log(num, msg)
            },
            func1: function (ev) {
                console.log(ev)
            },
            func2: function (ev, msg) {
                console.log(ev);
                console.log(msg)
            }
        }
    })
</script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/tuanzibuku/p/11093825.html