前端路线--Vue(day01)

01-初识Vue

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <!-- 插值表达式:{{js代码/数据}} -->
    <div id="app">
        <h2>{{msg}}</h2>
        <h2>{{txt}}</h2>
        <h2>{{10+10}}</h2>
        <h2>{{1>0?"二哥":"三弟"}}</h2>
    </div>
</body>
<script>
    // console.log(Vue); 构造函数
    //实例化一个Vue对象
    let vm = new Vue({
        el: "#app", //挂载元素(指定一个vm实例的作用范围)
        data: { //data中主要是用来定义数据的,可以在id为app的盒子中使用
            msg: "你好,我是小爱!",
            txt: "好谷二哥"
        }
    });
</script>

</html>

02-指令v-claoak

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
</head>

<body>
    <!-- 指令
        本质是一个自定义属性
        vuejs中指令都是v-* -->

    <!-- 
         v-cloak 作用防止插值在数据没有加载出来的时候闪烁
        需要配合css中的属性选择器来使用
        [v-cloak] {
            display: none;
        }

        执行的过程:
        1.当数据没有加载成功的时候,先通过样式隐藏插值
        2.当数据加载成功之后,在移除v-cloak这个属性
     -->
    <div id="app">
        <h2 v-cloak>{{msg}}</h2>
    </div>

</body>

<script>
    new Vue({
        el: "#app",
        data: {
            msg: 'hello,I am spideman!'
        }
    })
</script>

</html>

03-v-text

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <!-- v-text
        v-text指令用于将数据填充到标签中,作用与插值表达式类似,但是没有闪动问题
        相当于:JavaScript中的innerText和jQuery中的text()

        注意事项:
        1.会替换原来的内容
        2.如果数据中有html标签,会都当成文本一并输出
    -->
    <div id="app">
        <h2>郑州{{msg}}</h2>
        <h2 v-text="msg">郑州</h2>
        <h2 v-text="oHtml"></h2>
    </div>
</body>
<script>
    new Vue({
        el: "#app",
        data: {
            msg: "好谷课堂",
            oHtml: "<em>二哥</em>"
        }
    });
</script>

</html>

04-v-html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <!-- 
        v-html 
        作用:用法和v-text 相似  但是他可以将HTML片段填充到标签中
        相当于JavaScript中的innerHTML和jQuery中的html()

        注意事项:
        1.会替换原有的内容
        2.不安全,只在可信任的内容上使用,永远不在提交表单上使用

        它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,
        但v-html会将其当html标签解析后输出。

    -->
    <div id="app">
        <h2>郑州{{msg}}</h2>
        <h2 v-html="msg">郑州</h2>
        <h2 v-html="oHtml"></h2>
    </div>
</body>
<script>
    new Vue({
        el: "#app",
        data: {
            msg: "好谷课堂",
            oHtml: "<em>二哥</em>"
        }
    });
</script>

</html>

05-v-pre

Document

郑州{{msg}}

## 06-v-once
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <!-- 
        v-once 执行一次的操作,当数据变化时,不再执行
    -->
    <div id="app">
        <h2 v-once>郑州{{msg}}</h2>
        <!-- 在插值中可以执行函数,现在只是看效果,以后不推荐在这里执行函数 -->
        {{changeMSG()}}
    </div>
</body>
<script>
    new Vue({
        el: "#app",
        data: {
            msg: "我是最帅的!"
        },
        methods: { //methods中定义方法的
            changeMSG() { //定义一个方法来修改data中的msg数据
                this.msg = '哈哈'
            }
        }
    })
</script>

</html>

07-v-model

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
	<!-- v-model 实现双向数据绑定
	
			主要作用是获取表单中输入的数据
		   可以将data中定义的msg数据绑定到input上 
		   如果表单上边的值发生改变那么data中的msg也会跟着改变
		   1.试图修改,数据也修改
		   2.数据修改,视图也变
	-->
	<div id="app">
		<!-- 可以将data中定义的msg数据绑定到input上 -->
		<!-- 如果表单上边的值发生改变那么data中的msg也会跟着改变--视图修改了,数据也会发生变化 -->
		<input type="text"  v-model="msg">
		<h2>{{msg}}</h2>
		<!-- 在插值中执行函数来修改数据,那么v-model视图也会发生改变---数据变化了,视图也会变化 -->
		<!-- {{changeMSG()}} -->
	</div>
</body>
<script>
	new Vue({
		el:'#app',
		data:{
			msg:"超级英雄"
		},
		methods:{
			changeMSG(){
				this.msg="超人";
			}
		}
	});
</script>

</html>

08-js模拟双向输入

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <!-- v-model 实现双向数据绑定 

         主要作用是获取表单中输入的数据
    -->
    <div id="app">
        <input type="text" id="text">
        <div id="box"></div>
    </div>
    <script>
        var oText = document.getElementById("text");
        // oninput 实时获取表单中的输入的值
        // onchange 当输入框值改变并且失去焦点时候执行
        oText.oninput = function () {
            console.log(this.value);
            document.getElementById("box").innerHTML = this.value
        }
    </script>
</body>

</html>

09-v-model修饰符

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<!-- v-model="num" 表单中输入的值默认是字符串类型的 -->
		<!-- 表单修饰符
		    v-model.number 可以将表单中输入的值转换成数值类型
		    v-model.trim 去掉首尾的空格
		    v-model.lazy 取代input事件换成了change事件(值改变失去焦点时候修改数据)
		
		    v-model.lazy.number 一个元素上边可以使用多种修饰符,顺序无所谓
		-->
		<div id="app">
			<input type="text" v-model.number="num">
			<h2>{{num+num}}</h2>
			<input type="text" v-model.trim="msg">
			<h2>{{msg}}</h2>
			<input type="text" v-model.lazy="txt">
			<h2>{{txt}}</h2>
		</div>
	</body>
	<script type="text/javascript">
		new Vue({
			el:"#app",
			data:{
				num:10,
				msg:"好谷学堂",
				txt:"二哥"
			}
		})
	</script>
</html>

10-v-on

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<!-- v-on  是用来绑定事件的指令
		    v-on:事件名  如 点击事件  v-on:click="fn" 鼠标经过 v-on:mouseover="fn" ...
		    v-on:事件名  可以简写 @事件名  如 点击事件 @click="fn"
		 -->
		 <div id="app">
			 <h2>{{msg}}</h2>
			 <button v-on:click="changeMsg()">点击修改msg</button>
			 <button @mouseover="changeMsg2()">鼠标经过修改</button>
			 <button @click="changeMsg3('七个+','葫芦娃')">能传参哦</button>
		 </div>
	</body>
	<script type="text/javascript">
		new Vue({
			el:"#app",
			data:{
				msg:"快修改我"
			},
			methods:{
				changeMsg(){
					this.msg='修改了1';
				},
				changeMsg2(){
					this.msg='修改了2';
				},
				changeMsg3(args1,args2){
					this.msg=args1+args2;
				}
			}
		})
	</script>
</html>

11-v-on修饰符

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <style>
        .outer {
            width: 300px;
            height: 300px;
            background: red;
        }

        .inner {
            width: 150px;
            height: 150px;
            background: yellow;
        }
    </style>
</head>

<body>
    <!-- 事件修饰符
        @click.stop  阻止事件冒泡      js中e.stopPropagation() //阻止事件冒泡
        @click.prevent  阻止默认行为   js中 e.preventDefault()
        @click.capture 事件捕获,和事件冒泡执行的顺序相反
        @click.self 只会触发自己范围内的事件,不包含子元素
        
    -->
    <div id="app">
        <!-- @click.stop 阻止事件冒泡 -->
        <div class="outer" @click="outerFn">
            <div class="inner" @click.stop="innerFn">
                <button @click.stop="btnFn">好谷</button>
            </div>
        </div>

        <!-- @click.prevent  阻止默认行为 -->
        <!-- @click.prevent.once 阻止一次默认行为 -->
        <a href="http://www.hg-zn.com" @click.prevent.once="changeMsg">
            好谷就业力
        </a>
        <h2>{{msg}}</h2>

        <!-- @click.capture 事件捕获 -->
        <div class="outer" @click.capture="outerFn">
            <div class="inner" @click.capture="innerFn">
                <button @click.capture="btnFn">好谷</button>
            </div>
        </div>
		
		
        <h2>self修饰符</h2>
        <!-- @click.self 只会触发自己范围内的事件,不包含子元素 -->
        <div class="outer" @click="outerFn">
            <div class="inner" @click.self="innerFn">
                <button @click="btnFn">好谷</button>
            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg: "好谷就业力"
            },
            methods: {
                outerFn() {
                    console.log("outerFn");
                },
                innerFn() {
                    console.log("innerFn");
                },
                btnFn(e) {
                    // e.stopPropagation() //阻止事件冒泡
                    console.log("btnFn");
                },
                changeMsg() {
                    this.msg = "好谷"
                }
            }
        })
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值