vue基础知识

一、概述

Vue是一款渐进式JavaScript前端框架

Vue 只关注视图层, 采用自底向上增量开发的设计。

Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

作者:尤雨溪
官网:cn.vuejs.org
插件案例网址:GitHub - opendigg/awesome-github-vue: Vue相关开源项目库汇总

前端框架三架马车

  •     Vue
  •     React
  •     Angular

特点:

  1.     简单,上手方便
  2.     结合Angular指令与react组件思维
  3.     生态丰富(插件多)API文档完善

二、实例化参数new Vue

el:"#app"------选择目标标签
data:{ }------指定数据
data( ){return{ }}------一个函数返回一个对象
methods:{ }------定义事件

示例:

<script>
new Vue({
  el: '#app',
  data: {
    message: '大家好!',
  },
  methods:{
    
  }
})
</script>

三、computed计算

从现有数据计算出新的数据

例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
	<!-- 引入vue.js -->
    <script src="../vue.js"></script>
	<style type="text/css">
	</style>
</head>
<body>
<div id="app">
    <h1>计算:从现有数据计算出新的数据</h1>
	<p>n1:{{n1}}<input type="text" v-model.number="n1" /></p>
	<p>n2:{{n2}}</p>
	<p>n3:{{n3}}</p>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
           n1:10,
		   n2:5,
        },
        computed:{
			// 计算
            "n3":function(){
				return this.n1+this.n2;
			}
        }
    })
</script>
</body>
</html>

四、watch监听

监听数据的变化,并执行回调函数handler

watch:{
   "num":{
      handler(nval,oval){},
      deep:true
   }
}

五、自定义指令

bind绑定执行一次
insert插入执行一次
update每更新执行一次

directives:{
"focus":{
     update(el,binding){
       if(binding.value){ el.focus(); }
     }
  }
}
<input v-focus="flag">

六、过滤/管道(格式化数据)

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<p>num:{{num}}</p>
			<p><input type="text" v-model.number="num"/></p>
			<!-- 显示num 使用fix管道 -->
			<p>{{num|fix}}</p>
			<p>{{3.14145|fix(4)}}</p>
			<p>{{5432185|fix(2)}}</p>
			<p>{{5432185|fix|tel(",")}}</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					num:100,
				},
				// 过滤/管道(格式化数据)
				filters:{
					// 过滤名称,value过滤之前的值,arg管道的参数
					fix(value,arg=2){
						// 返回转换为小数后的值
						return value.toFixed(arg);
					},
					tel(value,arg="-"){
						// 1.转换为字符串,转数字,对数组遍历
						// 2.如果是第二位或第六位,加分隔符
						
						// 转换为数组
						var arr = String(value).split('');
						// 返回字符串
						var str = '';
						// 遍历数组
						arr.forEach((item,index)=>{
							// 默认加当前遍历元素
							str += item;
							if(index==0||index==3){
								str += arg;
							}
						})
						return str;
					},
				}
			})
		</script>
	</body>
</html>

七、指令

指令的值可以是简单的JavaScript命令
文本渲染指令

  • {{value}}
  • v-text
  • v-html (渲染html文本)

综合案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="./vue.js"></script>
	</head>
	<body>
		<div id="app">
			<h3>{{msg}}</h3>
			<!-- v-model内置指令 -->
			<input type="text" v-model="msg" />
			<p v-text="msg"></p>
            <!-- 重复三次 -->
			<p v-text="msg.repeat(3)"></p>
			<!-- v-html识别标签 -->
			<p v-html="msg2"></p>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",//指定模板标签
				data:{
					msg:"我爱泥",
					msg2:"<strong>安阳</strong>是个好地方"
				}//指定数据
			})
		</script>
	</body>
</html>

属性绑定

  • v-bind : 属性="指令值"
  • :属性="值"

条件渲染

  • v-show (css方式隐藏)
  • v-if
  • v-else-if
  • v-else

区别:频繁切换用v-show
           一次性切换用v-if
           v-show隐藏是通过css的方式隐藏节点


列表渲染

  • v-for = "item in list"(list要遍历的数组,item当前遍历的项目)
  • v-for = "(item,index) in list"(index 当前遍历项的索引 从0开始)
  • 使用v-for务必v-bind:key=" "  :key="值"

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 引入vue.js -->
		<script src="./vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p v-for="item in list">{{item}}</p>
			<!-- key优化vue的渲染(要求是唯一)推荐使用:key优化 -->
			<h3 v-for="(item,index) in user" :key="item.name">
				姓名:{{item.name}},
				年龄:{{item.age}}
			</h3>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",//指定模板
				data:{
					list:["vue","react","angular"],
					user:[
						{name:"beibei",age:19},
						{name:"dian",age:17},
						{name:"yqq",age:18}
					]
				},
			})
		</script>
	</body>
</html>

    v-for特点:

           值必须是唯一的
           添加key属性可以优化v-for的渲染
           让vue更好识别当前渲染的节点
           特别是在排序、过滤等操作的时候
           不建议key的值使用循环的索引

事件指令

v-on:事件类型="响应函数"
v-on:click="say( )"

@click="say( )"   事件的简写
@click="num++"   行内事件响应

事件修饰符

  •     . stop 阻止事件冒泡
  •     . prevent 阻止默认事件
  •     . once 只执行一次

    @click.stop.once.prevent="num++"
    事件的修饰符可以同时写多个

按键修饰符

  • @keyup.up
  • @keyup.down
  • .left
  • .right
  • .delete
  • .enter
  • .space
  • .esc

按键修饰符例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 引入vue.js -->
		<script src="../vue.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- @keyup监听键盘的弹起 -->
			<!-- @keyup.up 监听键盘上键,弹起@keyup.enter监听回车键 -->
			<!-- list.unshift(item)在list最前面插入item -->
			<input type="text" v-model="num"
			@keyup.up="num++"
			@keyup.down="num--"
			@keyup.enter="list.unshift(num)"
			/>
			<p v-for="item in list" :key="item">{{item}}</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					num:1,
					list:[]
				},
			})
		</script>
	</body>
</html>

$event   事件监听对象

表单绑定指令

v-model 让表单的值与数据绑定再一起

<input type="checkbox">   默认选中值是true,不选中值是false

<input type="checkbox" name="fruit" v-model="list">   

//如果是多个选中的值动态添加到list数组中


修饰符

  •     .number 转数字

<input type="text" v-model.number="n1" />

  •     .trim 移除空白

<input type="text" v-model.trim="temp" >

类绑定


 1.属性  :class="值"
 2. 对象  当对象的属性为真,该属性作为class绑定

:class="{'key1':true,'key2':false}"
//key1的值为真,key1被绑定


 3. 数组方式 :class="[c1,c2,c3]"

样式绑定

样式属性名去掉 - 下一个字母大写

:style="{color:'res','fontSize':'48px'}"

八、动画 

什么是动画?
        两个状态间的过度效果/变化
        vue的动画是在元素的显示与隐藏之间切换的
        vue的动画需要内置组件<transition></transition>包裹
        vue会自动在动画的进入过程与离开过程添加类名
        真正实现动画,还需自己写css

内置组件

1.transition

  • name名称
  • mode:模式

        in-out先进再出
        out-in先出再进

<transition name="fade" 
	mode="in-out"
	enter-active-class="slideInRight animated"
	leave-active-class="slideOutLeft animated">
</transition>
  • enter-active-class 指定进入类名
  • leave-active-calss 指定离开类名

2.transition-group

动画类

1. v-enter-active 进入过程
       v-enter进入前
       v-enter-to进入后
2. v-leave-active 离开过程
       v-leave离开前

3.创建动画形式

动画类6个css创建

keyframes关键帧
.fade-enter-active{animation: fadeIn 1s ease}
.fade-leave-active{animation: fadeOut 1s ease}


引用第三方动画库
指定进入的class与离开的class

<transition enter-active-class="slideIn animated"
leave-active-class="hinge animated">

 九、组件

一段可以重复利用的代码块

全局组件
        Vue component("组件名",{template:``})
局部组件
        const steper = {template:``}
注册组件
        new Vue({
           components:{steper}
        })
使用组件
        <steper></steper>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值