当前位置: 首页 > news >正文

vue学习之组件与标签

目录

  • 一、单文件组件(.vue文件)
  • 二、API风格
    • 1)选项式API
    • 2)组合式API
  • 三、标签
    • v-text:设置标签的文本值
    • v-html:将数据以HTML格式渲染到标签中
    • v-on:为元素绑定事件
    • v-show:控制元素的显示/隐藏
    • v-if:根据表达式的真假,添加/移除元素(与v-show区别开)
    • v-bind:动态绑定属性
    • v-for:基于数组/对象循环渲染元素
    • v-on:绑定时间(点击,输入等)
    • v-model:表单元素上的双向数据绑定

一、单文件组件(.vue文件)

vue的单文件组件会将一个组件的逻辑(js)、模版(html)、样式(css)封装在同一个文件里面。

import{ createApp, ref} from 'vue'
createApp({setup(){return {count:ref(0)}}
}).mount('#app')
<div id="app"><button @click="count++">Count is:{{ count}}</button>
</div>
  • 用vue的格式重写上面的计数器示例:
<script setup>
import {ref} from 'vue'
const count=ref(0)
</script><template><button @click="count++">Count is: {{ count }}</button>
</template><style scoped>
button{font-weight:bold;
}
</style>

二、API风格

Vue的组件可以按照两种不同的风格书写

  • 选项式API
  • 组合式API

1)选项式API

使用选项式API,我们可以用包含多个选项的对象来描述组件的逻辑,例如data、methods、mounted
选项所定义的属性都会暴露在函数内部的this上,他会指向当前的组件实例

<script>
export default{//data() 返回的属性将会成为响应式的状态//并且暴露在"this"上,便于访问和修改data() {return{count:0}},//methods 是一些用来更改状态与触发更新的函数//它们可以在模版中作为事件处理器绑定methods:{increment(){this.count++}},//生命周期钩子在组件生命周期的各个不同阶段被调用//例如这个函数就会在组件挂载完成后被调用mounted() {console.log('The initial count is ${this.count}.')}
}
</script><template><button @click="increment">Count is :{{ count }}</button>
</template>

2)组合式API

  • 通过组合式API,我们可以使用导入的API 函数来描述组件逻辑。在单文件组件中,组合式API通常会与

三、标签

创建Vue示例时,el(挂载点),data(数据),methods(方法)

v-text:设置标签的文本值

可以简写为{{}},插值表达式

<div id="app"><h2 v-text="message+'!'"></h2><h2>深圳{{ message+"!" }}</h2>
</div>var app=new Vue({el:'#app',data:{message:'程序员'}
})

v-html:将数据以HTML格式渲染到标签中

  • v-html指令的作用是:设置元素的innerHTML
  • 内容中有html结构会被解析为标签
  • v-text指令无论内容是什么,只会解析为文本
  • v-html与v-text标签类似,但是可以解析渲染html结构的内容

解析文本使用v-text,需要解析html结构使用v-html

v-on:为元素绑定事件

  • v-on指令的作用是:为元素绑定事件
  • 事件名不需要写on
  • 指令可以简写为@
  • 绑定的方法定义在methods属性中
  • 方法内部通过this关键字可以访问定义在data中数据

vue提供了一种简便写法,v-on:等同于@
示例:

<div id="app"><input type="button" value="事件绑定" v-on:事件名="方法"><input type="button" value="事件绑定" v-on:monseenter="方法"><input type="button" value="事件绑定" v-on:dblclick="doit"><input type="button" value="事件绑定" @dblclick="doit">
</div>var app=new Vue({el:"#app",methods:{//方法show:function(event){alert("事件被触发了")},doit:function(){alert("doit方法被触发了")}}
})
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue学习之v-on指令基础</title>
</head>
<body><!-- 2.html结构 --><div id="app"><input type="button" value="v-on指令" v-on:click="doit"><input type="button" value="v-on简写" @click="doit"><input type="button" value="双击事件" @bdlclick="doit"><h2 @click="changeFood">{{food}}</h2></div><!-- 1.开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>// 3.创建Vue实例对象var app=new Vue({el:"#app",data:{food:"西兰花炒蛋"},methods:{doit:function(){alert("做IT");},changeFood:function(){//console.log(this.food);this.food+="好好吃!"}}})</script>
</body>
</html>

v-show:控制元素的显示/隐藏

  • 根据表达式的真假,切换元素的显示和隐藏
  • 原理是修改元素的dispaly,实现显示隐藏
  • 指令后面的内容,最终都会解析为布尔值
  • 值为true元素显示,值为false元素隐藏
<div><img src="地址" v-show="true"><img src="地址" v-show="isShow"><img src="地址" v-if="age>=18">
</div>var app=new Vue({el:"#app",data:{isShow:true,age:18}
})

v-if:根据表达式的真假,添加/移除元素(与v-show区别开)

  • 根据表达值的真假,切换元素的显示和隐藏
  • 本质是通过操纵dom元素来切换显示状态
  • 表达式的值为true,元素存在于dom树中,为false,从dom树中移除
<div id="app"><p v-if="true">我是一个p标签</p><p v-if="isShow">我是一个p标签</p><p v-if="表达式">我是一个p标签</p>
</div>var app=new Vue({el:"#app",data:{isShow:true,age:18}
})

v-bind:动态绑定属性

  • 设置元素的属性(src,class,title),元素的属性都写在元素的内部
  • v-bind:属性名=表达式
  • 简写的话可以直接省略v-bind,只保留:属性名
  • 需要动态的增删class建议使用对象的方式
<div id="app"><img src="地址"><img v-bind:"imgSrc"><img v-bind:title="imgtitle+'!!!'"><img :title="imgtitle+'!!!'">       //简写形式,冒号后面紧跟属性名,v-bind省略<img :class="isActive?'active':''"><img :class="{active:isActive}">    //对象语法
</div>var app=new Vue({el:"#app",data:{imgSrc:'图片地址',imgTitle:"苦命程序员",isActive:false}
})

v-for:基于数组/对象循环渲染元素

  • 根据数据生成列表结构
  • 数组经常和v-for结合使用
  • 基础语法是(item,index)in 数据,item代表每一项可变,index代表索引
  • item和index可以结合其他指令一起使用
  • 数组长度的更新会同步到页面上,是响应式的
<div id="app"><ul><li v-for="item in arr" :title="item">{{ item }}</li><li v-for="(item,index) in objArr">{{item.name}}</li></ul>
</div>var app=new Vue({el:"#app",data:{arr:[1,2,3,4,5],objArr:[{name:"jack"},{name:"rose"}]}
})

v-on:绑定时间(点击,输入等)

  • 事件绑定的方法写成函数调用的形式,可以传入自定义参数
  • 定义方法时需要定义形参来接收传入的实参
  • 事件的后面跟上.修饰符可以对事件进行限制
  • .enter可以限制触发的按键为回车
  • 事件修饰符有多种
  • 传递自定义参数,事件修饰符
<div id="app"><input type="button" @click="doit(p1)"/><input type="text" @keyup.enter="sayHi"/>
</div>var app=new Vue({el:"#app",data:{},methods:{doit:function(p1){},sayHi:function(){}}
})

事件修饰符:
https://cn.vuejs.org/v2/api/#v-on

v-model:表单元素上的双向数据绑定

  • 获取和设置表单元素的值(双向数据绑定)
  • v-model指令的作用是便捷的设置和获取表单元素的值
  • 绑定的数据会和表单元素值相关联
  • 绑定的数据——表单元素的值
<div id="app"><input type="text" v-model="message"/>
</div>var app=new Vue({el:"#app",data:{message:"苦命程序员"}
})
http://www.dtcms.com/a/585026.html

相关文章:

  • 软件测试之bug分析定位技巧
  • Rust 练习册 :Pig Latin与语言游戏
  • Tomcat的基本使用作用
  • 完整网站建设教程网站建设需要会什么软件
  • 【ASP.Net MVC 】使用Moq让单元测试变得更简单
  • Linux:线程的概念与控制
  • 零基础学AI大模型之嵌入模型性能优化
  • 【二叉搜索树】:程序的“决策树”,排序数据的基石
  • Canvas/SVG 冷门用法:实现动态背景与简易数据可视化
  • 昆明做网站做的好的公司智能建站系统 网站建设的首选
  • kali安装npm/sourcemap
  • 协作机器人的关节是通过什么工艺加工的
  • 轻松开启数字化时代,一键部署实现CRM落地
  • 长春市网站推广网站开发技术人员
  • JavaScript 指南
  • C++ LeetCode 力扣刷题 541. 反转字符串 II
  • C++死锁深度解析:从成因到预防与避免
  • 达梦DMDSC知识
  • 【C++】基于C++的RPC分布式网络通信框架(二)
  • Python 实现:从数学模型到完整控制台版《2048》游戏
  • 第1课-通过DIFY实现一个完整的Text2Sql来讲AI原生及Agentic RAG长什么样
  • 站长平台wordpress调用分类产品
  • 2.3 Transformer 变体与扩展:BERT、GPT 与多模态模型
  • 《Windows 服务器 ×WinSCP 保姆级配置指南:从 0 到 1 实现 “无痛” 远程文件管理》
  • 用nas做网站泰安集团
  • 自己做的网站可以运营不wordpress和json
  • 怎么做文学动漫网站公司logo设计图片欣赏
  • 网站建设 模块厦门网站建设哪家不错
  • 深圳做高端网站建设公司做家装的网站有什么不同
  • 武威网站建设DS716 II 做网站