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

Vue前端框架08 Vue框架简介、VueAPI风格、模板语法、事件处理、数组变化侦测

目录

    • 一、Vue框架
      • 1.1渐进式框架
      • 1.2 Vue的版本
    • 二、VueAPI的风格
    • 三、Vue开发准备工作
    • 四、模板语法
      • 文本插值
      • 属性绑定
      • 条件渲染
      • 列表渲染
      • key管理状态
    • 四、事件处理
      • 定义事件
      • 事件参数
      • 事件修饰符
    • 五、数组变化侦测

一、Vue框架

渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的Web前端框架
功能是构建用户界面
基于标准的HTML、CSS和JavaScript,提供了一套声明式的、组件化的编程模型,帮助高效得开发用户界面

1.1渐进式框架

渐进式框架:Vue是一个框架也是一个生态,功能覆盖了大部分前端的常见需求,Vue的设计非常注重灵活性和可以被逐步集成的特点
不同方式使用Vue:
1、无需构建步骤,渐进式增强静态的HTML
2、在任何页面作为 Web components嵌入
3、单页应用(SPA)
4、全栈/服务端渲染(SSR)
5、jamstack/静态站点生成(SSG)
6、开发桌面端、移动端、WebGL,甚至是命令行终端中的界面

1.2 Vue的版本

Vue的版本:开发中Vue可以选择两大版本,Vue2和Vue3,老项目一般Vue2,新项目一般选择Vue3
Vue3涵盖了Vue2的知识体系,当然Vue3增加了很多新的特性

官方文档:cn.vuejs.org

二、VueAPI的风格

主要两种风格:选项式API(Vue2)和组合式API(Vue3)
不同底层提供的两个接口,基础概念和知识是通用的
当生产项目中:
不需要使用构建工具或者在低复杂度的场景中用Vue的时候,推荐用选项式API
当打算用Vue构建完整的单页应用,推荐采用组合式API+单文件组件

三、Vue开发准备工作

查看vue版本
node -v
创建Vue项目
npm init vue@latest
进入项目
cd vue-base
安装
npm install
运行项目
npm run dev

vite.config.js Vue配置文件
package.json 信息描述文件
index.thml 入口html文件
node_modules Vue项目运行的依赖文件
public 资源文件夹
README.md 注释文件

四、模板语法

Vue使用的是基于HTML的模板语法,可以以声明式的将组件实例绑定到DOM中,所有的VUE语法都是语法层面合法的HTML,可以被符合规范的浏览器和HTML解析器解释

文本插值

双大括号进行数据绑定文本插值
每个绑定支持单一表达式

<template><p>{{msg}}</p><p>{{hello}}</p><p>{{num+1+2+3}}</p><p>{{ok?'Yes':'No'}}</p><p>{{message.split("").reverse().join("")}}</p>
</template><script>
export default {data(){return{msg:"神奇的语法",hello:"hello world",num:10,ok:'Yes',message:"大家好呀"}}
}
</script>

属性绑定

双大括号不能在HTML attribute中使用 想要响应式绑定一个attribute,应该使用v-bind指令

<template>
<!--  用v-bind 调整属性 同时可以用:简写   undefined 那么就是消除对应的属性-->
<div v-bind:class="dynamicClass" v-bind:id="dynamicId" :title="dynamicTittle">{{msg}}111</div>
<!--  一次性绑定多个-->
<div v-bind="objectOfAttrs"></div>
</template><script>
export default {name: "HelloWorld",data(){return{msg:"hello world",dynamicClass:"active",dynamicId:"APPID",dynamicTittle:undefined,objectOfAttrs:{class:"appclass",id:"appid"}}}
}
</script>

条件渲染

<template><h3>条件渲染</h3><div v-if="flag">看得见吗?</div><div v-else-if="!flag">还是看看吧</div>
<!--  v-show 和 v-if 一样的但是v-if是真实的按条件渲染 切换的时候对监听器和组件销毁与重建 false不会做任何事 true才会去渲染v-show简单 无论条件如何都会渲染 只不过改变的是display的属性v-if 强调的是切换开销 v-show 强调初始渲染开销频繁切换用v-show  运行时捆绑条件少用v-if
--><div v-show="flag">看得见吗?</div>
</template><script>
export default {data(){return{flag:false}}
}
</script><style scoped></style>

列表渲染

<template><h3>列表渲染</h3><p v-for="item in names" v-bind:key="item">{{item}}</p>
<!--  index 是默认的下标--><p v-for="(item,index) in names" v-bind:key="(item,index)">{{item}}-{{index}}</p>
<!--  v-for 不仅仅可以遍历数组 也可以遍历对象--><div v-for="item in result" v-bind:key="item"><p>{{item.title}}</p><img :src="item.url" :alt="item.id"></div><div v-for="item in result" v-bind:key="item"><div v-for="(value,key,index) in item" v-bind:key="(value,key,index)"><p>{{value}}-{{key}}-{{index}}</p></div></div><div v-for="(value,key,index) in user" v-bind:key="(value,key,index)"><p>{{value}}-{{key}}-{{index}}</p></div>
</template><script>
export default {name: "ForDemo",data(){return{names:["a","b","c"],result:[{"id":101,"title":"标题1","url":"https://www.baidu.com/img/PC_wenxin_1142bc061306e094e6eddaa3d9656145.gif"},{"id":102,"title":"标题2","url":"https://www.baidu.com/img/PC_wenxin_1142bc061306e094e6eddaa3d9656145.gif"},{"id":103,"title":"标题3","url":"https://www.baidu.com/img/PC_wenxin_1142bc061306e094e6eddaa3d9656145.gif"}],user:{name:"kewin",age:18}}}
}
</script>

key管理状态

Vue默认按照就地更新策略渲染元素列表
当顺序改变 vue不会移动dom元素的顺序,而是就地更新,确保原本指定的索引位置上渲染
为了给vue一个提示,方便跟踪每个节点的标识,从而重用和重新排序现有的元素,需要一个key唯一标志属性

四、事件处理

可以使用v-on指令(简写@)监听DOM事件,并且在事件触发的时候执行对应的JavaScript
用法:οnclick=“methodname”或@click=“handler”
事件处理器的值可以是内联事件处理器也可以是方法事件处理器

定义事件

<template><button @click="count++">AddInline</button><button @click="addCount">AddMethod</button><p>{{count}}</p>
</template><script>
export default {name: "ListenerDemo",data(){return{count:1}},//所有方法函数都放在这里methods:{addCount(){this.count++console.log(this.count)}}
}
</script>

事件参数

事件参数可以获取event对象和通过事件传递参数
vue中event对象就是js的event对象

  methods:{addCount(e){this.count++console.log(e.target.innerHTML="Add"+this.count)}
<template><button @click="count++">AddInline</button><button @click="addCount('hello')">AddMethod</button><p>{{count}}</p><p @click="getNameHanlder(item)" v-for="(item,index) in names" :key="index">{{item}}</p>
</template><script>
export default {name: "ListenerDemo",data(){return{count:1,names:["张三","李四","王五"]}},//所有方法函数都放在这里methods:{addCount(msg){this.count++event.target.innerHTML="add"+msg},getNameHanlder(item){console.log(item)}}
}
</script>
<template><button @click="count++">AddInline</button><!-- 可以用&event 传event事件参数 --><button @click="addCount('hello',$event)">AddMethod</button><p>{{count}}</p><p @click="getNameHanlder(item)" v-for="(item,index) in names" :key="index">{{item}}</p>
</template><script>
export default {name: "ListenerDemo",data(){return{count:1,names:["张三","李四","王五"]}},//所有方法函数都放在这里methods:{addCount(msg,e){this.count++e.target.innerHTML="add"+msg},getNameHanlder(item){console.log(item)}}
}
</script>

事件修饰符

<template><h3>事件修饰符</h3>
<!--  进行修饰 实现点击但是不跳转--><a @click.prevent="clickHandle" href="http://www.baidu.com">点击进入连接</a><div @click="clickDiv">
<!--    让事件不冒泡到父元素--><p @click.stop="clickP">测试冒泡</p></div>
</template><script>
export default {name: "ListenerDemo2",methods:{clickHandle(){console.log("被点击了")},clickDiv(){console.log("DIV")},clickP(){console.log("P")}}
}
</script><style scoped></style>

五、数组变化侦测

<template><h3>数组变化侦听</h3><ul><li v-for="(item,index) of names" :key="index"> {{item}}</li></ul>
<!--  Vue可以侦听响应式数组的变更方法 并且在调用的时候触发相关的更新push()  添加pop()   取出最上面的一个shift()unshift()splice()sort()reverse() 逆置
--><button @click="addListHandle1">reverse</button>
<!--使用替换数组的方法来更新filter()concat()slice()直接对原数组进行变更
--><button @click="addListHandle2">itemupdate</button>
</template><script>
export default {name: "ArrayListenerDemo",data(){return{names:["张三","李四","王五"]}},methods:{addListHandle1(){this.names.reverse()},addListHandle2(){//直接this.names.concat(["123"])不会引起UI更新this.names=this.names.concat(["123"])}}
}
</script>

相关文章:

Vue前端框架08 Vue框架简介、VueAPI风格、模板语法、事件处理、数组变化侦测

目录 一、Vue框架1.1渐进式框架1.2 Vue的版本 二、VueAPI的风格三、Vue开发准备工作四、模板语法文本插值属性绑定条件渲染列表渲染key管理状态 四、事件处理定义事件事件参数事件修饰符 五、数组变化侦测 一、Vue框架 渐进式JavaScript框架&#xff0c;易学易用&#xff0c;性…...

WebStorm使用PlantUML

虽然 WebStorm 没有官方的 PlantUML 插件&#xff0c;但我们可以使用第三方插件 PlantUML Integration 来实现在 WebStorm 中使用 PlantUML。 以下是使用 PlantUML Integration 插件&#xff0c;在 WebStorm 中设计一个 Vue 模块的步骤&#xff1a; 安装 PlantUML Integratio…...

Python做批处理,给安卓设备安装应用和传输图片

场景&#xff1a;几台新安卓平板过来了&#xff0c;需要安4个应用并复制4张图片。手工操作其实也未尝不可&#xff0c;但是能自动化起来&#xff0c;岂不是美哉。 python调用系统命令&#xff0c;我选用了os.system&#xff0c;最简单粗暴&#xff0c;也能有回显&#xff0c;就…...

如何获取springboot中所有的bean

代码 Component public class TestS {Autowiredprivate Map<String, Object> allBean Maps.newConcurrentMap();public void testA(){System.out.println("测试下");}}这段代码是一个使用 Spring Framework 的依赖注入&#xff08;DI&#xff09;功能的示例。…...

大数据技术之Hadoop:HDFS存储原理篇(五)

目录 一、原理介绍 1.1 Block块 1.2 副本机制 二、fsck命令 2.1 设置默认副本数量 2.2 临时设置文件副本大小 2.3 fsck命令检查文件的副本数 2.4 block块大小的配置 三、NameNode元数据 3.1 NameNode作用 3.2 edits文件 3.3 FSImage文件 3.4 元素据合并控制参数 …...

用C语言实现牛顿摆控制台动画

题目 用C语言实现牛顿摆动画&#xff0c;模拟小球的运动&#xff0c;如图所示 拆解 通过控制台API定位输出小球运动的只是2边小球&#xff0c;中间小球不运动&#xff0c;只需要固定位置输出左边小球上升下降时&#xff0c;X、Y轴增量一致。右边小球上升下降时&#xff0c;X、…...

如何自己开发一个前端监控SDK

最近在负责团队前端监控系统搭建的任务。因为我们公司有统一的日志存储平台、日志清洗平台和基于 Grafana 搭建的可视化看板&#xff0c;就剩日志的采集和上报需要自己实现了&#xff0c;所以决定封装一个前端监控 SDK 来完成日志的采集和上报。 架构设计 因为想着以后有机会…...

node.js笔记

首先&#xff1a;浏览器能执行 JS 代码&#xff0c;依靠的是内核中的 V8 引擎&#xff08;C 程序&#xff09; 其次&#xff1a;Node.js 是基于 Chrome V8 引擎进行封装&#xff08;运行环境&#xff09; 区别&#xff1a;都支持 ECMAScript 标准语法&#xff0c;Node.js 有独立…...

mysql 增量备份与恢复使用详解

目录 一、前言 二、数据备份策略 2.1 全备 2.2 增量备份 2.3 差异备份 三、mysql 增量备份概述 3.1 增量备份实现原理 3.1.1 基于日志的增量备份 3.1.2 基于时间戳的增量备份 3.2 增量备份常用实现方式 3.2.1 基于mysqldump增量备份 3.2.2 基于第三方备份工具进行增…...

9月5日上课内容 第一章 NoSQL之Redis配置与优化

本章结构 关系型数据库和非关系型数据库 概念介绍 ●关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是…...

QT 第四天

一、设置一个闹钟 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend…...

nrf52832 GPIO输入输出设置

LED_GPIO #define LED_START 17 #define LED_0 17 #define LED_1 18 #define LED_2 19 #define LED_3 20 #define LED_STOP 20设置位输出模式&#xff1a; nrf_gpio_cfg_output(LED_0); 输出高电平:nrf_gpio_pin_set(LED_0); 输…...

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉列…...

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…...

JavaScript(1)每天10个小知识点

​ 目录 1. JavaScript 有哪些数据类型&#xff0c;它们的区别&#xff1f;**2. 数据类型检测的方式有哪些**3. null 和 undefined 区别**4. intanceof 操作符的实现原理及实现**5. 如何获取安全的 undefined 值&#xff1f;**6. Object.is() 与比较操作符 “”、“” 的区别*…...

scanf和scanf_s函数详解

目录 引言&#xff1a; 1.scanf函数的用法&#xff1a; 2.scanf_s函数的用法&#xff1a; 3.scanf和scanf_s的区别&#xff1a; 结论&#xff1a; 引言&#xff1a; 在C语言中&#xff0c;输入函数scanf是非常常用的函数之一&#xff0c;它可以从标准输入流中读取数据并将其…...

基于SSM的在线购物系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

认识JVM的内存模型

从上一节了解到整个JVM大的内存区域&#xff0c;分为线程共享的heap&#xff08;堆&#xff09;&#xff0c;MethodArea&#xff08;方法区&#xff09;&#xff0c;和线程独享的 The pc Register&#xff08;程序计数器&#xff09;、Java Virtual Machine Stacks&#xff08;…...

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…...

论文浅尝 | 训练语言模型遵循人类反馈的指令

笔记整理&#xff1a;吴亦珂&#xff0c;东南大学硕士&#xff0c;研究方向为大语言模型、知识图谱 链接&#xff1a;https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型&#xff08;large language model, LLM&#xff09;可以根据提示完成各种自然语言处理任务。然而&am…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...