Vue--Vue基础(二)

Vue--Vue基础(二)

文章目录

  • Vue--Vue基础(二)
    • [1.Vue 指令详解](#1.Vue 指令详解)
      • [1.1.v-if 条件渲染](#1.1.v-if 条件渲染)
      • [1.2.v-else 指令](#1.2.v-else 指令)
      • [1.3.v-show 显示隐藏](#1.3.v-show 显示隐藏)
      • [1.4 v-if vs v-show](#1.4 v-if vs v-show)
      • [1.5 v-on 事件绑定](#1.5 v-on 事件绑定)
      • [1.6v-model 双向绑定](#1.6v-model 双向绑定)
      • [1.7v-bind 属性绑定](#1.7v-bind 属性绑定)
      • [1.8v-for 列表渲染](#1.8v-for 列表渲染)
    • [2.Vue 核心配置项](#2.Vue 核心配置项)
    • [3.Vue 优点](#3.Vue 优点)

1.Vue 指令详解

1.1.v-if 条件渲染

vue 复制代码
<div id="app">
    <p v-if="isShow">表达式的值为真,我就能显示</p>
</div>

<script>
new Vue({
   el:"#app",
    data: {
        isShow: true
    }
});
</script>

1.2.v-else 指令

vue 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.min.js"></script>
		<title>条件渲染</title>
	</head>
	<body>
		<div id="app">
			<h1 v-if="awesome">Vue is awesome</h1>
			<h1 v-else>oh</h1>
		</div>
		<script>
			var app=new Vue({
				el:"#app",
				data:{
					awesome:false
				}
			})
		</script>
	</body>
</html>

1.3.v-show 显示隐藏

vue 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.min.js"></script>
		<title>v-show</title>
	</head>
	<body>
		<div id="app">
			<h1 v-show="awesome">Vue is awesome</h1>
			<h1 v-show="!awesome">oh</h1>
			<button @click="awesome = !awesome">切换显示</button>
		</div>
		<script>
			var app = new Vue({
				el: "#app",
				data: {
					awesome: true
				}
			})
		</script>
	</body>
</html>

1.4 v-if vs v-show

特性 v-if v-show
渲染机制 条件为false时不渲染到DOM 始终渲染,通过display控制显示
切换消耗 高(涉及DOM操作) 低(只是CSS切换)
初始渲染 低消耗 高消耗
适用场景 条件不太可能改变 需要频繁切换

1.5 v-on 事件绑定

vue 复制代码
<!-- 基本用法 -->
<button v-on:click='fn()'>点击</button>

<!-- 简写形式 -->
<button @click='fn'>点击</button>

<!-- 传递参数 -->
<button @click="say('Hi')">Hi</button>


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
			<script src="js/vue.min.js"></script>
		<title>事件处理</title>
	</head>
	<body>
		<div id="example">
			<!-- <button v-on:click="greet">点击</button> -->
			<button @click="greet()">点击</button>
		</div>
		
		<script>
			var app=new Vue({
				el:"#example",
				data:{
					message:"hello 99"
				},
				methods:{
					//方法必须定义到vue Menthods对象中
					greet:function(){
						alert(this.message);
					}
				}
			})
		</script>
	</body>
</html>

1.6v-model 双向绑定

vue 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.min.js"></script>	
		<title>双向绑定v-model</title>
	</head>
	<body>
		<!-- <div id="example">
			输入文本:<input type="text" v-model="message"/>{{message}}
		</div> -->
		<div id="example">
			<input type="radio" name="sex" value="男" v-model="message" checked/>男
			<input type="radio" name="sex" value="女" v-model="message"/>女
			<p>
				选中了:{{message}}
			</p>
		</div>
		
		<script>
			var app=new Vue({
				el:"#example",
				data:{
					message:" "
		
			}
		});
		</script>
	</body>
</html>

适用元素:表单元素(input、textarea、select等)

1.7v-bind 属性绑定

vue 复制代码
<!-- 基本用法 -->
<img v-bind:src="imageSrc">

<!-- 简写形式 -->
<img :src="imageSrc">

<!-- 动态类名 -->
<div :class="{ divclass: isRed }"></div>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.min.js"></script>
		<title>v-bind示例</title>
	</head>
	<body>
		<div id="app">
             <img v-bind:src="imageSrc">
    
		</div>
		
		<script>
            var vm = new Vue({
                el: '#app',
                data: {
                    imageSrc: "images/5.jpg",
                    isRed: true
                }
            });
        </script>
	</body>
</html>

1.8v-for 列表渲染

vue 复制代码
<div id="app">
    <!-- 遍历对象 -->
    <li v-for="(value, key, index) in person">
        {{index}} - {{key}} - {{value}}
    </li>
    
    <!-- 遍历数组 -->
    <li v-for="(item, index) in lesson" :key="index">
        {{index}} - {{item.name}} - {{item.type}}
    </li>
    
    <!-- 双层嵌套 -->
    <li v-for="(item, index) in lesson">
        <span v-for="(childValue, index) in item.type">
            {{index}} - {{childValue}}
        </span>
    </li>
</div>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.min.js"></script>
		<title>列表渲染</title>
	</head>
	<body>
		<table id="example" border="1" >
			<tr>
				<td>序号</td>
				<td>学号</td>
				<td>姓名</td>
			</tr>
			<tr v-for="(item,index) in list">
				<td>{{(index+1)}}</td>
				<td>{{item.StudentNo}}</td>
				<td>{{item.StudentName}}</td>
			</tr>
		</table>
		<script>
			var app=new Vue({
				el:"#example",
				data:{
					list:[
						{
						   StudentName: "张三",
						   StudentNo:1000
						},
						{
							StudentName: "李四",
						    StudentNo:1001
						},
						{
							StudentName: "王五",
						   StudentNo:1002
						}
					]
				}
			})
		</script>
	</body>
</html>

key的作用:高效重用和重新排序现有元素,建议提供唯一标识

2.Vue 核心配置项

2.1el

  • 指定Vue实例挂载的元素
  • 值:选择器字符串或DOM元素

2.2data

  • 定义响应式数据
  • 在模板中通过插值表达式或指令使用

2.3methods

  • 定义方法
  • 在模板中通过v-on指令调用

3.Vue 优点

  • 简洁:模板+数据+实例,结构清晰
  • 轻量:35KB大小,性能优秀
  • 渐进式:可以边学边用,逐步深入
  • 数据驱动:视图与数据分离,无需直接操作DOM
  • 社区丰富:大量中文资料和开源案例
相关推荐
ObjectX前端实验室2 小时前
【react18原理探究实践】更新调度的完整流程
前端·react.js
tanxiaomi3 小时前
通过HTML演示JVM的垃圾回收-新生代与老年代
前端·jvm·html
palpitation973 小时前
Android App Links 配置
前端
FuckPatience3 小时前
Vue 组件定义模板,集合v-for生成界面
前端·javascript·vue.js
sophie旭4 小时前
一道面试题,开始性能优化之旅(3)-- DNS查询+TCP(三)
前端·面试·性能优化
开心不就得了4 小时前
构建工具webpack
前端·webpack·rust
gerrgwg4 小时前
Flutter中实现Hero Page Route效果
前端
不枯石4 小时前
Matlab通过GUI实现点云的ICP配准
linux·前端·图像处理·计算机视觉·matlab
hhzz4 小时前
Pythoner 的Flask项目实践-在web页面实现矢量数据转换工具集功能(附源码)
前端·python·flask