VUE的认识

VUE

vue官网(https://cn.vuejs.org/)

1.VUE了解
① VUE是一个渐进式的js框架(MVVM模式)
1)渐进式:学多少,用多少
2)MVVM模式:
在这里插入图片描述
② 特性
轻量:
Vue.js库的体积非常小的,并且不依赖其他基础库。
数据绑定:
对于一些富交互、状态机类似的前端UI界面,数据绑定非常简单、方便。
指令:
内置指令统一为(v—*),也可以自定义指令,通过对应表达值的变化就可以修改对应的DOM。
插件化:
Vue.js核心不包含Router(路由)、AJAX、表单验证等功能,但是可以非常方便地根据需要加载对应插件。
组件化:
组件可以扩展 HTML 元素,封装可重用的代码。允许我们使用小型、自包含和通常可复用的组件构建大型应用
允许大写自定义标签

2.VUE入门
在这里插入图片描述
① 引入vue.js

<script src="vuejs/vue.js"></script>

② 准备工作台

  <div id="app">
	 {{name}}
	 {{age}}
  </div>

③ 创建Vue对象

var app=new  Vue({
		el:"#app",
		data{
				name:"张三",
				age:33
		}
})

3.Vue实例挂载(el)的标签
每个Vue实例通过el配置挂载的标签,该标签可以通过id或者是class挂载。 实例上的属性和方法只能够在当前实例挂载的标签中使用。

  var app=new  Vue({
    	el:"#app", //el:".app"    el:"div"
    	data{
    	...
    	}
   })

4.Vue中的数据(data)详解

① Vue实例的数据保存在配置属性data中, data自身也是一个对象

data : {
	    //可以是字符串
        message : "我是一个很单纯的p",
        //也可以是对象
        employee: { 
    		    name : "隔壁老文",
    			age : 17,
    			doing(){
    				alert("吃饭")
    			}
    	},
    	//还可以是数组
    	array:["aa","bb","c"]
    	......
}

② 修改data对象中的数据,及时同步的页面上

<script type="text/javascript">
	var app=new  Vue({
		.....
    	data{
    	   message : "我是一个很单纯的p",
    	}
   })
   this.message="xxxxxxx"
   app.message="xxxxxxx"
</script>

③ 通过Vue实例直接访问

<div id="app">
		{{message}}   //我是一个很单纯的p
		{{employee.name}}   //隔壁老文
		{{employee.age}}   //17
		{{array[0]}}   //a
</div>

5.Vue中的方法(methods)详解

<div id="app">
		{{say()}}
</div>

var app = new Vue({
			el : "#app",
			data : {
				.....
				}
			},
			methods:{
				say:function(){
					//this指向当前对象,当前app对象
					return "hello:"+this.user.name+"!";
				},
				swim:function(){
					console.debug("小狗的游泳姿势,还不错。。。");
				}
			}
		});
	  //通过Vue对象实例调用方法
	  app.swim();
	  this.swin();

6.vue数据双向绑定体验(v-model)

<div id="app">
		<!--监听input中值的改变同步到data中的message上:
		v-model:数据的绑定;
    		将app对象中的message值绑定到input中,同时输入input值后,
    		也作用于app的message值。-->	
		<input type="text"  v-model="message" />
		<!-- 显示app对象的message的值 -->
		<h1>{{message}}</h1>
</div>
<!-- 引入vue文件 -->
<script type="text/javascript" src="js/vue/vue.min.js"></script>
<script type="text/javascript">
		var app = new Vue({
			el : "#app",
			data : {
				message : "我是一个很单纯的p",
 			}
		});
</script>

VUE表达式语法

1 .简单表达式(在 {{ }} 中进行简单预算)
在进行简单运算时,如果参与运算的值有字符串,-,*,/会把字符串转换成数字在运算,+则会字符串拼接

<div id="app">
        <!--简单表达式  -->
        <h1>{{5+5}}</h1>     10
        <!-- +:运算,字符串连接 -->
        <h1>{{5+"v5"}}</h1>    5v5
        <h1>{{5+"5"}}</h1>       55
        <!-- -:减法 -->
        <h1>{{"5"-"5"}}</h1>    0
	    <!-- *:乘 -->
        <h1>{{5*5}}</h1>    25
    
        <h1>{{"5"*"5"}}</h1>   你在做* / - %  字符串它会自动转为数字    25
        <!-- / 除-->
        <h1>{{5/5}}</h1>    1
        <h1>{{5/5}}</h1>    1
</div>

2.三目运算

<div id="app">
		<!--三目运算  -->
		{{ show1?"真":"假"}}
	</div>
	<script type="text/javascript" src="js/vue/vue.min.js"></script>
	<script type="text/javascript">
		var app = new Vue({
			el : "#app",
			data : {
				show1 : true
			}
		});
	</script>

3.字符串操作

<div id="app">
        {{"这是字面值"}}<br/>
        {{"这是字面值".length}}<br/>  //字段长度
        {{message.length}}<br/>   //message的长度
        {{message.substring(1,5)}}<br/>  //获取message的下标1-5的字段
        {{message.substring(2,6).toUpperCase()}}<br/>  //英文字段大写
</div>
<script type="text/javascript" src="js/vue/vue.min.js"></script>
<script type="text/javascript">
    var app = new Vue({
        el: "#app",
        data: {
            message: "这是data中的数据"
        }
    });
</script>

4.对象操作

<div id="app">
    {{user}}<br/>
    {{user.toString()}}<br/>  
    {{user.name}}<br/>
    {{user.age}}<br/>
    {{user.getAge()}}<br/>
</div>
<script type="text/javascript" src=“js/vue/vue.min.js”></script>
<script type="text/javascript">
    var user = {
        name: "张三",
        age: 29,
        getAge: function () {
            return this.age
        },
        toString:function(){
            return "姓名:"+this.name+",年龄:"+this.age;
        }
    };
    var app = new Vue({
        el: "#app",
        data: {
            user: user
        }
    });
</script>

5.数组操作

<div id="app">
    {{hobbys}}<br/>
    {{hobbys[0]}}<br/>
    {{hobbys.length}}<br/>
</div>
<script type="text/javascript" src=“js/vue/vue.min.js”></script>
<script type="text/javascript">
    var app = new Vue({
        el: "#app",
        data: {
            hobbys:["打游戏","踢足球",'泡MM',"泡GG"]
        }
    });
</script>

VUE指令

vue指定的一些特殊的属性,格式:v-xxx
① v-text
主要用于展示一个标签的数据,但标签原来的数据会被覆盖,文本展示,不会解析h5的标签,会原封不动的展示

<span v-text="message">原来的数据</span>
 
 message: "<h1>这是HTMl代码</h1>"

② v-html
主要用于展示一个标签的数据,但标签原来的数据会被覆盖,会解析h5的标签,展示相应的效果

<span v-text="message">原来的数据</span>

message: "<h1>这是HTMl代码</h1>"

③ v-for
基于数据源多次循环达到多次渲染当前元素
数据源可以是Array,Object,NumBer,String
语法1:

<标签 v-for="元素 in 数据源"></标签>

语法2:

<标签 v-for="(元素,索引|键) in 数据源"></标签>

语法3:

<标签 v-for="(元素,键,索引) in 对象"></标签>

实例

<div id="app">
    <h1>循环数组</h1>
    <ul>
        <li v-for="hobby in hobbys">{{hobby}}</li>
    </ul>
    <h1>遍历对象</h1>
    <ul>
        <li v-for="value in student">{{value}}</li>
    </ul>

    <h1>带索引循环数组</h1>
    <ul>
        <li v-for="(hobby,index) in hobbys">{{index}}--{{hobby}}</li>
    </ul>
    <h1>带键遍历对象</h1>
    <ul>
        <li v-for="(value,key,index) in student">{{index+1}}---{{key}}--{{value}}</li>
    </ul>
</div>
<script type="text/javascript" src=“js/vue/vue.min.js”></script>
<script type="text/javascript">
    var app = new Vue({
        el: "#app",
        data: {
            hobbys : ["爬山","游泳","打豆豆","睡觉"],
            student : {
                name: "小毛",
                age: 29,
                sex: "男",
            },
            num : 10,
            str : "itsource",
        }
    });
</script>

④ v-show
是否显示此数据,只是隐藏了数据,还是存在的

<标签名 v-show="true/false"></标签名>

⑤ v-if
根据表达式的值的真假条件渲染元素,如果不满足条件,就会从页面上删除

<标签名 v-if="判断表达式"></标签名>

实例

<div id="app">
	    <div v-if="show">你看到我了!</div>
	    <div v-if="hidden">你看不到我了!</div>
	    <div v-if="score>=90">优秀</div></div>
	<script type="text/javascript" src=“js/vue/vue.min.js”></script>
	<script type="text/javascript">
	    var app = new Vue({
	        el: "#app",
	        data: {
	            "show":true,
	            "hidden":true,
	            "score":90,
	        }
	    });
	</script>

⑥ v-else
当v-if表达式不成立时, v-else执行

<标签名 v-if="表达式"></标签名>
<标签名 v-else></标签名>

⑦ v-else-if

<标签名 v-if="表达式"></标签名>
<标签名 v-else-if="表达式"></标签名>
<标签名 v-else-if="表达式"></标签名>
<标签名 v-else></标签名>

⑧ v-model
在表单控件上创建双向绑定
1) 表单控件

<input type="text" v-model="textVal"> {{textVal}}
<input type="password" v-model="pwdVal"> {{pwdVal}}
<hr/>
<input type="radio" v-model="sexVal" value="true"  name="sex">男
<input type="radio" v-model="sexVal" value="false" name="sex">女 {{sexVal}}
<hr/>
<input type="checkbox" v-model="hoppes" value="1">篮球
<input type="checkbox" v-model="hoppes" value="2">足球
<input type="checkbox" v-model="hoppes" value="3">排球
<input type="checkbox" v-model="hoppes" value="4">棒球{{hoppes}}

2) TextArea控件

<textarea v-model="textarea"></textarea>{{textarea}}

3)Select控件

<select v-model="skills">
        <option v-for="v in selectVal" :value="v.id">{{v.text}}</option>
</select>
    {{skills}}
</div>
<script>
    var app=new Vue({
        el:"#app",
        data:{
            textVal:"hello",
            pwdVal:"123456",
            sexVal:true,
            hoppes:[],
            textarea:"请输入文本",
            selectVal:[
                {id:1,text:"中国"},
                {id:2,text:"日本"},
                {id:3,text:"美国"},
                {id:4,text:"英国"},
                {id:5,text:"俄罗斯"},
            ],
            skills:""
        }
    })
</script>

⑨ v-on 事件绑定
语法:

<标签 v-on:事件句柄="表达式或者事件处理函数"></标签>

简写

<标签 @事件句柄="表达式或者事件处理函数"></标签>

实例

 <div id="app">
        <button v-on:click="clickUp()">点我啊</button>
        <button @click="clickUp()">点我啊</button>
 </div>
 </body>
 <script>
        new Vue({
            el:"#app",
            data:{},
            methods:{
                clickUp:function(){
                    alert("叫你点你就点啊!!")
                }
            }
        })
 </script>

⑩ v-bind
将data中的数据绑定到标签上,作为标签的属性
语法1:

 <标签 v-bind:标签属性名字="表达式"></标签>

简写:

  <标签 :标签属性名字="表达式"></标签>

实例

<div id="app">
    <img v-bind:src="src" v-bind:width="width">
     <img :src="src" :width="width">
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            width:300,
            src:"imgs/4d076f01024a9fa76039018c6f8b88af.jpg"
        }
    })
</script>

语法2:

  <标签 v-bind="对象"></标签>

实例

 <div id="app">
        <img :src="src" :width="width">
        <hr/>
        <img v-bind="props">
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                width:300,
                src:"imgs/4d076f01024a9fa76039018c6f8b88af.jpg",
                props:{
                    width:300,
                    src:"imgs/90c58b032c79ead09f58201f91d91059.jpg",
                }
            }
        })
    </script>

Vue组件基础

1.组件是Vue中很强大的功能:简单点就是把很多的代码块封装成一个模板,多处都可以使用,再进一步:自定义html标签:包含了一堆的功能;
2.组件的分类
①全局组件
全局组件可以作用于全局的挂载对象;

<id id="app">
        <test></test>
</id>
<script>
        Vue.component("test",{
            template:"<h1>全局组件</h1>"})
        new Vue({
            el:"#app",
            data:{
            }
        })
</script>

②局部组件
局部组件:只能作用于挂载的当前对象;

<id id="app">
   <test></test>
</id>
<script>
        new Vue({
            el:"#app",
            data:{},
            components:{
                test:{
                    template:"<h1>局部组件</h1>"
                }
            }
        })
</script>

主要事项:
① 模板中必须有根标签
② 先定义组件在挂载
③ 驼峰命名自定义标签的格式:<my-Late><my-Late>

3.组件使用两种HTML模板
方式1:直接在template属性写上html代码字符串

   components:{
         test:{
               template:"<h1>局部组件</h1>"
         }
    }

方式2:如果html代码过长,方式1就不适合,使用方式2将当前网页中的html标签作为模板代码
1) 使用template标签或者script标签,script 标签要加上type属性,如下

       <template id="ml">
            <h1>template标签中的html</h1>
        </template>

       <script type="text/template" id="ml">
            <h1>template标签中的html</h1>
        </script>

2) template属性上使用上门的html模板代码

	  new Vue({
	        el:"#app",
	        data:{},
	        components:{
	            "mylate":{
	            	template:"#ml"  // #代表找到对应的html代码作为当前组件的模板代码
	            }
	        }
	    })	

3)组件中的数据必须是函数
语法:

"组件的名字":{
        template: "",
        data : function(){
            return {
              键1:值1,
              键2:值2
            }
        }
   }

路由

1.概念
路由是负责将进入的浏览器请求映射到特定的 组件 代码中。 即决定了由谁(组件)去响应客户端请求。
2.使用方法
① 导入vue-router.js

<script type="text/javascript" src="js/vue/vue.js"></script>
<script type="text/javascript" src="js/vue/vue-router.js"></script>

② 在js中定义路由和组件

    var index = Vue.component("index", {
        template : "<h1>首页</h1>"
    });
    //>>2.公司产品:组件
    var product = Vue.component("product", {
        template : "<h1>公司产品</h1>"
    });
    //>>3.关于我们:组件
    var about = Vue.component("about", {
        template : "<h1>关于我们</h1>"
    });

    var router = new VueRouter({
        routes : [ {
            path : "/",//路由地址
            component : index
            //路由对应的资源
        }, {
            path : "/about",//路由地址
            component : about
            //路由对应的资源
        }, {
            path : "/product",
            component : product
        }, ]
    });

③ 挂载到dom元素上

   //创建一个vue对象
		var app = new Vue({
			el : "#app",//挂载在app上
			router : router
		//使用路由对象
		});

④ 使用路由和定义路由出口

<div id="app">
		<!-- 使用 router-link 组件来导航. -->
		<!-- 通过传入 `to` 属性指定链接. -->
		<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
		<!-- 使用app中的路由:匹配到product路由地址,然后在router-view标签中展示这个地址对应的资源 -->
		<router-link to="/product">公司产品</router-link>
		<router-link to="/about">关于我们</router-link>
		<hr />
		<!-- 路由出口 -->
		<!-- 路由匹配到的组件将渲染在这里 -->
		<router-view></router-view>
	</div>

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值