Vue基础语法(一)vue简介与几个方法

Vue

<head>
    <meta charset="UTF-8">
    <title>文本指令</title>
    <style>
        .box {
            width: 200px;
            height: 100px;
            background-color: darkgray;
        }
        .pg1 { background-color: red; }
        .pg2 { background-color: yellow; }
        .pg3 { background-color: blue; }
    </style>
</head>
<body>
    <div id="app">
        <!-- v-if与v-show的变量值都是bool,控制着显隐 -->
        <!-- v-if隐藏时标签不被渲染,v-show隐藏时标签渲染,用display:none来隐藏 -->
        <!-- 特殊属性key是vue在内存中建立缓存的标志, 来优化渲染的效率 -->
        <p v-if="is_if" key="my_if">v-if的显示与隐藏</p>
        <p v-show="is_show" key="my_show">v-show的显示与隐藏</p>


        <p>
            <button @click="btn_click('pg1')">红</button>
            <button @click="btn_click('pg2')">黄</button>
            <button @click="btn_click('pg3')">蓝</button>
            <div class="box pg1" v-if="pg == 'pg1'" key="pg1"></div>
            <div class="box pg2" v-else-if="pg == 'pg2'" key="pg2"></div>
            <div class="box pg3" v-else key="pg3"></div>
        </p>
    </div>
</body>
<script src="js/vue.min.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            is_if: true,
            is_show: true,
            pg: 'pg1'
        },
        methods: {
            btn_click: function (pg_num) {
                this.pg = pg_num
            }
        }
    })
</script>
# Vue:前台框架
# 渐进式JavaScript框架
# 渐进式:vue可以控制页面的一个局部,vue也可以控制整个页面,vue也能控制整个前端项目
#      -- 根据项目需求,来决定vue控制项目的程度

使用方式简介

# 1.下载:https://vuejs.org/js/vue.min.js
 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
 
# 2.导入vue.js
<script src="js/vue.min.js"></script>

# 3.在自定义的script标签中创建vue对象
new Vue({
el:...
data:..
})

# 4.用vue对象来控制页面内容
	在script脚本内实现

vue的优点

'''
单页面web应用
数据驱动
数据的双向绑定
虚拟DOM
'''

挂载点与数据的渲染

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="js/vue.min.js"></script>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <div id="app">
        <!-- 插值表达式:插值表达式中出现的名字代表vue变量 -->
        <div class="root">{{ abc }}</div>
        <div class="main">{{ xyz }}</div>
    </div>
</body>

<script src="js/vue.min.js"></script>
<script>
    new Vue({
        // 挂载点:vue对象通过el参数(挂载点)与页面结构建立联系,vue对象与页面控制的结构应该是一对一关系,所以挂载点选择id作为唯一标识
    	el: '#app',
       	// 在挂载点插值表达式中出现的名字是变量,需要vue对象通过data提供
        data: {
            abc: '内容',
            xyz: 3.14
        }
    })
</script>

vue实例

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="js/vue.min.js"></script>
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
    <div id="app">
        <!-- 插值表达式:插值表达式中出现的名字代表vue变量 -->
        <div class="root">{{ abc }}</div>
        <div class="main">{{ xyz }}</div>
    </div>
</body>


<script>
	new Vue({
		e1:'#app',
		data:{
			abc:'内容',
			xyz:'111'
		}
	})
</script>

methods绑定事件

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="js/vue.min.js"></script><head>
    <meta charset="UTF-8">
    <title>Title</title>
<head>
</head>
<body>
<div id="app">
    <!-- v-on来为事件绑定方法,事件用 :事件名 标注 -->
    <!-- 语法:v-on:事件名 = "事件变量" -->
    <!-- 事件变量:由vue实例的methods提供 -->
    <button v-on:click="btnClick">{{ msg }}</button>
</div>
</body>


<script>
   new Vue({
	   el: '#app',
        data: {
		     msg: "按钮"
        },
	   methods: {
	   btnClick: function() {
	   alert ('this is alert')
   }
   }
   })
</script>

案例:通过事件修改标签样式

<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /* 通过不同的类名控制着一套css样式 */
        .btn {
            width: 100px;
            height: 40px;
            background: orange;
        }
        .botton {
            width: 200px;
            height: 80px;
            background-color: yellowgreen;
        }
    </style>
</head>
<body>
    <div id="app">
        <!-- v-bind来为属性绑定变量,属性用 :属性名 标注  eg:  :style  :class  :id -->
        <!-- 语法:v-bind:属性名 = "属性变量" -->
        <!-- 事件变量:由vue实例的data提供 -->
        <button v-on:click="btnClick" v-bind:style="my_style" v-bind:class="my_cls">{{ msg }}</button>
    </div>
</body>
<script src="js/vue.min.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: "按钮",
            my_style: {
                // background: 'transparent'
            },
            my_cls: 'btn'
        },
        methods: {
            btnClick: function () {
                // console.log(this.my_style.background)
                // this.my_style.background = 'yellow';
				// 修改类名就能直接对应一套css样式
                if (this.my_cls == 'btn') {
                    this.my_cls = 'botton'
                } else {
                    this.my_cls = 'btn'
                }
            }
        }
    });
</script>
</html>

案例:通过事件修改标签样式

<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /* 通过不同的类名控制着一套css样式 */
        .btn {
            width: 100px;
            height: 40px;
            background: orange;
        }
        .button {
            width: 200px;
            height: 80px;
            background-color: yellowgreen;
        }
		.body1{
			background: #FF0004;
		}
		.body2{
			background: #F6FC0A;
		}

    </style>
</head>
<body>
    <div id="app">
        <!-- v-bind来为属性绑定变量,属性用 :属性名 标注  eg:  :style  :class  :id -->
        <!-- 语法:v-bind:属性名 = "属性变量" -->
        <!-- 事件变量:由vue实例的data提供 -->
        <button v-on:click="btnClick"  v-bind:style="my_style" v-bind:class="my_cls">{{ msg }}</button>
    </div>
</body>
<script src="js/vue.min.js"></script>
<script>
new Vue({
	el : '#app',
	data:{
	msg:'点击按钮',
	my_cls:'btn',
           // my_style: {
           //      background: 'transparent'
           //  }
},
		methods:{
		btnClick:function(){
	if (this.my_cls == 'btn'){
		this.my_cls = 'button'
	}else{
		this.my_cls = 'btn'
	}
}
		}
});
</script>
</html>

实例的computed

computed功能:将function封装给一个变量,通过该变量就可以得到该function的返回值
应用场景:一个变量(name)依赖于 多个变量(first_name + last_name)的值

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="js/vue.min.js"></script>
    <meta charset="UTF-8">
    <title>Title</title>
<div id="app">
    <!-- v-model就是为表单元素 value属性 绑定变量 -->
    <p>
        姓:<input type="text" placeholder="姓" v-model="first_name">
    </p>
    <p>
        名:<input type="text" placeholder="名" v-model="last_name">
    </p>
    <p>
        <!-- 插值表达式中可以书写  变量表达式 -->
        姓名:<span class="span">{{ name }}</span>
    </p>
</div>
<script src="js/vue.min.js"></script>
<script>
new Vue({
    el:"#app",
    data:{
        first_name:'',
        last_name:''
    },
    computed:{
        name:function () {
            if(this.first_name == '' && this.last_name == ''){
                return '姓名'
            }
            return this.first_name + this.last_name
            }
        }


});
</script>

实例的watch方法

watch是用来监听变量的,当监听的变量的值一旦发生变化,就会触发监听的函数
应用场景:多个变量(first_name、last_name)依赖于一个变量(name)

<div id="app">
    <p>
        姓名:<input type="text" placeholder="姓名" v-model="name">
    </p>
    <p>姓: {{ first_name }}</p>
    <p>名: {{ last_name }}</p>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            name: "",
            first_name: "姓",
            last_name: "名",
        },
        watch: {
            name: function () {
                // eg: name = “张三”
                this.first_name = this.name[0];  // 张
                this.last_name = this.name[1];  // 三
            }
        }
    });
</script>

在这里插入图片描述

实例的delimiters

<body>
    <div id="main">
        <!-- 查找表达式 {{ }} 符号与其他语言冲突,可以自定义表达式的符号 -->
        <!-- 实例的 delimiters: ['左侧符号', '右侧符号'] -->
        {{ msg }}{{{ msg }}}${ msg }
    </div>
</body>
<script src="js/vue.min.js"></script>
<script>
    // vue实例(对象)
    new Vue({
        el: '#main',
        data: {
            msg: "信息"
        },
        // delimiters: ['{{{', '}}}'],
        delimiters: ['${', '}'],
    });
</script>

实例的生命周期钩子

学习目的:
#钩子:满足某种条件被(系统)调用的方法
在一个vue实例,从创建到销毁,整个过程中或产生一些时间节点,这些时间节点都会回调一些指定名字绑定的方法,在这些函数中去完成特点时间点的业务功能

new Vue({
    el: '#app',
    data: {
        msg: "message"
    },
    methods: {
        fn: function () {
            return '123'
        }
    },
    beforeCreate: function () {
        console.log('实例要被创建了');
        console.log(this.msg)
    },
    created: function () {
        console.log('实例已经创建了');
        console.log(this.msg);
        console.log(this.$el)
    },
    mounted: function () {
        console.log('实例已经渲染到页面');
        console.log(this.msg);
        console.log(this.$el);
        console.log(this.fn)
    },
    '生命周期钩子名': function () {
        console.log('该时间点需要完成的业务逻辑');
    },
});

生命周期参考:
https://cn.vuejs.org/v2/api/#选项-生命周期钩子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值