VUE3-模板语法《二》

首先看到这张图,左边的结构就不分析了,上一章有说明顺序。 

中间红色的部分,分为3块,第一块是模板,里面写html;第二块是脚本语言,里面写js或者ts语言,lang="ts"就是ts语法,setup就是vue3中独有的一份,需要注意写法,否则会报错;第三块是html的样式,scoped只在当前区域有效果。这3块可以任意排列,根据你的习惯而定,既然是模板语法,那么重点就是template里面,在template里面写代码,和html写的代码效果是一样的,只是一种语法糖。

一,变量问题

定义变量

var,作用于全局的变量,定义的时候可以不赋值

let,作用于模块内部的变量,定义的时候可以不赋值

const,作用与模块内部的常量,定义的时候必须赋值

<template>
	{
   
   {a}}
	{
   
   {b}}
	{
   
   {c}}
</template>

<script lang="ts" setup>
	let a = '测试let'
	const b = '测试const'
	var c = '测试var'

	let a1
	const b1 = '' //必须赋值
	var c1
</script>

<style scoped>

</style>

 字符串占位符

<template>
	<!-- 	{
   
   {a}}
	{
   
   {b}}
	{
   
   {c}} -->
	{
   
   {b}}
</template>

<script lang="ts" setup>
	// let a = '测试let'
	// const b = '测试const'
	// var c = '测试var'

	// let a1
	// const b1 = '' //必须赋值
	// var c1

	let a = '测试let'
	let b = `测试占位符${a}`
</script>

<style scoped>

</style>

二,插值方法

上面的{ {}}就是插值法

扫描二维码关注公众号,回复: 15284534 查看本文章

三,指令

指令前面都是带v-

v-html,插入一段html代码

<template>
	<span v-html="rawHtml"></span>
</template>

<script lang="ts" setup>
	let rawHtml = '<span style="color: red">这里会显示红色!</span>'
</script>

<style scoped>

</style>

v-show,根据表达式的值的真假,来显示或者隐藏html元素

 

<template>
	<!-- <span v-html="rawHtml"></span> -->
	<h1 v-show="yes">123</h1>
	<h1 v-show="yes1">456</h1>
</template>

<script lang="ts" setup>
	// let rawHtml = '<span style="color: red">这里会显示红色!</span>'
	let yes = true
	let yes1 = false
</script>

<style scoped>

</style>

v-if /v-else-if/v-else,这3个都是用于条件判断

<template>
	<!-- <span v-html="rawHtml"></span> -->
	<h1 v-show="yes">123</h1>
	<h1 v-show="yes1">456</h1>
	<h1 v-if="yes">789</h1>
	<h1 v-if="yes1">456</h1>
	
	<h1 v-if="score>=80">优秀</h1>
	<h1 v-else-if="score>=70">良好</h1>
	<h1 v-else>及格</h1>
	
	<h1 v-if="score1>=80">优秀</h1>
	<h1 v-else-if="score1>=70">良好</h1>
	<h1 v-else>及格</h1>
</template>

<script lang="ts" setup>
	// let rawHtml = '<span style="color: red">这里会显示红色!</span>'
	let yes = true
	let yes1 = false
	
	let score=80
	let score1=60
</script>

<style scoped>

</style>

其中v-if和v-show的功能是一样的,都是控制html是否显示元素。

但是,v-if有更高的切换开销,而v-show有更高的初始渲染开销,因此,如果需要非常频繁的切换元素的显示和隐藏,使用v-show。如果在运行时条件很少改变,则使用v-if。

v-for,通过循环的方式来渲染一个列表,循环的对象可以是数组,也可以是对象。

<template>
	<li v-for="(b,index) in books">{
   
   {index}}-{
   
   {b.title}}</li>
	<h1 v-for="b of books">{
   
   {b.title}}</h1>
	<h2 v-for="(b,index) of books">{
   
   {index}}-{
   
   {b.title}}</h2>
	<h3 v-for="(b,index) of books" :key="index">{
   
   {index}}-{
   
   {b.title}}</h3>
</template>

<script lang="ts" setup>
	let books = [{
			title: 'vue2'
		},
		{
			title: 'vue3'
		},
		{
			title: 'vue4'
		}
	]
</script>

<style scoped>

</style>

可见,H3中需要:key="index",才不会警告提示,其他3个前面都有警告提示

v-bind,用于响应更新html元素的属性,将一个或多个属性动态的绑定到表达式

<template>
	<button v-bind:disabled="isButtonDisabled">按钮</button>
	<button :disabled="isButtonDisabled1">按钮</button>
</template>

<script lang="ts" setup>
	let isButtonDisabled = true
	let isButtonDisabled1 = false
</script>

<style scoped>

</style>

v-model,用来在表单<input>,<textarea>元素上创建双向数据绑定,它会根据控件类型自动选取正确的方法来更新元素。也就是界面的数据变化了,内部定义的变量也跟着变化。

<template>
	<input type="text" v-model="a" />
</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

v-on,用于监听DOM事件,就是使用事件的时候,需要用它。 

<template>
	<div>
		<button v-on:click="a">按钮</button>
		<button @click="b">按钮1</button>
	</div>
</template>

<script lang="ts" setup>
	let a = (() => {
		alert(123);
	});
	let b = (() => {
		alert(456);
	})
</script>

<style scoped>

</style>

v-text,用于更新元素的文本内容

<template>
	<span v-text="a"></span>
	<span>{
   
   {a}}</span>
</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

v-once,从字面上理解就是只渲染一次,之后将不会渲染了,比如,初始化数组4个值,之后就不能向里面增加值了,意义并不大,很少使用。

v-pre,不需要编译这个元素,原本是什么,就显示什么。

<template>
	<div>
		<h1 v-pre>{
   
   {a}}</h1>
	</div>

</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

猜你喜欢

转载自blog.csdn.net/u012563853/article/details/128378887