初学Vue

文章目录

  • 简介
    • 特点
  • 初识
  • Vue模板语法两大类
    • 插值语法
    • 指令语法
  • 两种数据绑定方式
    • 单项绑定(v-bind)
    • 双向绑定(v-model)
  • 数据代理
  • 事件处理
    • 基本使用
    • 事件修饰符
  • 键盘事件
  • 计算属性 computed

简介

  1. 一套用于构建用户界面的渐进式JavaScript框架
    Vue可以自底向上逐层的应用

特点

  1. 采用组件化模式,提高代码复用率、且让代码更好维护。
  2. 声明式编码,让编码人员无需直接操作DOM,提高开发效率
  3. 使用虚拟DOM+优秀Diff算法,尽量复用DOM节点。

初识

  1. 创建Vue实例,传入一个配置对象
<div id="root"><h1>Hello,{{name}}</h1>
</div><script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示// 创建vue实例const x = new Vue({el: '#root',  // el用于指定当前Vue实例为哪个容器服务,值通常为CSS选择器字符串data: {  // data用于存储数据,数据会自动与el中的内容进行绑定name: 'mq'}})
</script>
  1. vue实例和容器是一一对应的
  2. 真实开发中只有一个Vue实例,并且会配合着组件一起使用
  3. {{xxx}}中的xxx要写js表达式,并且xxx可以自动读取到data中的所有属性
  4. 一旦data中的数据发生改变,那么模版中用到该数据的地方也会自动更新
    注意:
    js表达式 & js代码(语句)
    a. 表达式
    一个表达式会生成一个值,可以放在任何一个需要值的地方
    (1) a
    (2) a+b
    (3) demo(1)
    (4) x === y ? ‘a’ : ‘b’
    b. js代码(语句)
    (1) if(){}
    (2) for(){}

Vue模板语法两大类

插值语法

功能:用于解析标签体内的内容
写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性

指令语法

功能:用于解析标签(包括:标签属性、标签体内容、绑定事件…)
v-bind:href=“xxx” 或 简写为 :href=“xxx”, xxx同样要写js表达式,且可以直接读取到data中的所有属性

各类语法简写
v-bind: ===> :
v-on: ===> @
v-model:value ===> v-model

<div id="root"><h1>插值语法</h1><h1>Hello,{{name}},{{address}}</h1><hr/><h1>指令语法</h1><a :href="url">点我去百度</a>
</div><script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示// 创建vue实例const x = new Vue({el: '#root',  // el用于指定当前Vue实例为哪个容器服务,值通常为CSS选择器字符串data: {  // data用于存储数据,数据会自动与el中的内容进行绑定name: 'mq',address: '北京',url: 'https://www.baidu.com/'}})
</script>

两种数据绑定方式

单项绑定(v-bind)

数据只能从data流向页面

双向绑定(v-model)

数据不仅能从data流向页面,还可以从页面流向data
备注:

  1. 双向绑定一般都应用在表单类元素上(例如:input、select等)
  2. v-model:value 可以简写为v-model,因为v-model默认收集的就是value值
<div id="root">单向数据绑定: <input type="text" name="" id="" :value="name"><br>双向数据绑定: <input type="text" v-model="name"/>
</div>
<script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示// 创建vue实例const x = new Vue({el: '#root',  // el用于指定当前Vue实例为哪个容器服务,值通常为CSS选择器字符串data: {name: 'mq'}})
</script>

数据代理

  1. vue中的数据代理:
    通过一个对象代理对另一个对象中属性的操作(读/写)
  2. vue中数据代理的好处:
    更加方便的操作data中的数据
  3. 基本原理:
    通过Object.defineProperty() 把data对象中的所有属性添加到vm上。
    为每一个添加到vm上的属性,都指定一个getter/setter。
    在getter/setter内部去操作(读/写)data中对应的属性
let obj = {x:100}
let obj2 = {y:200}
Object.defineProperty(obj2, 'x', {get(){return obj.x},set(value){obj.x = value}
})

在这里插入图片描述

事件处理

基本使用

  1. 使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;
  2. 事件的回调需要配置在methods对象中,最终会在vm上;
  3. methods 中配置的函数,不要用箭头函数!否则this就不是vm了;
  4. methods中配置的函数,都是被vue所管理的函数,this的指向是vm 或 组件实例对象;
  5. @click=“demo” 和 @click="demo($event)"效果一致,但是后者可以传参
<div id="root"><h2>欢迎来到{{name}}学习</h2><button @click="showInfo1">点我提示信息1(不传参)</button><button @click="showInfo2(66,$event)">点我提示信息2(传参)</button>
</div><script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示new Vue({el: '#root',data: {name: '河科院'},methods: {showInfo1() {// console.log(this);  // 此处的this指向Vue实例alert('欢迎来到' + this.name + '学习')},showInfo2(number, event) {console.log(number,event);// console.log(this);  // 此处的this指向Vue实例alert('欢迎来到' + this.name + '学习')}}})
</script>

事件修饰符

Vue中的事件修饰符:

  1. prevent:阻止默认事件(常用);
  2. stop:阻止事件冒泡(常用);
  3. once:事件只触发一次(常用);
  4. capture:使用事件的捕获模式;
  5. self:只有event.target是当前操作的元素是才触发时间;
  6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕
    注:可以连着写,例如即阻止冒泡又阻止默认事件
<div id="root"><h2>欢迎来到{{name}}学习</h2><a href="https://www.baidu.com/" @click.prevent="showInfo">点我提示信息</a><div class="demo1" @click="showInfo"><button @click.stop="showInfo">点我提示信息</button></div><div class="box1" @click.capture="showMsg(1)">div1<div class="box2"  @click="showMsg(2)">div2</div></div>
</div><script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示new Vue({el: '#root',data: {name: '河科院'},methods: {showInfo(e) {// e.stopPropagation(),// console.log(this);  // 此处的this指向Vue实例alert('欢迎来到' + this.name + '学习')},showMsg(num) {// e.stopPropagation(),// console.log(this);  // 此处的this指向Vue实例alert('欢迎来到' + num + '学习')},}})
</script>

键盘事件

  1. Vue中常用的按键别名:
    回车 => enter
    删除 => delete
    退出 => esc
    空格 => space
    换行 => tab(特殊,必须配合keydown去使用)
    上 => up
    下 => down
    左 => left
    右 => right
  2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但要注意要转为kebab-case(短横线命名)
  3. 系统修饰键(用法特殊):ctrl、alt、shift、meta
    a. 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
    b. 配合keydown使用:正常触发事件
  4. 也可以使用keyCode去指定具体按键(不推荐)
  5. Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名

计算属性 computed

  1. 定义:要用的属性不存在,要通过已有属性计算得来
  2. 原理:底层借助Object.defineproperty方法提供getter和setter
  3. get函数什么时候执行
    a. 初次读取时会执行
    b. 当依赖的数据发生修改时会被再次调用
  4. 优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便
  5. 备注:
    a. 计算属性最终会出现在vm上,直接读取使用即可
    b. 如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变
<div id="root">姓:<input type="text" v-model="firstName"><br><br>名:<input type="text" v-model="lastName"><br><br>姓名:<span>{{fullName}}</span><br><br>姓名:<span>{{fullName}}</span><br><br>姓名:<span>{{fullName}}</span><br><br>姓名:<span>{{fullName}}</span>
</div><script type="text/javascript">Vue.config.productionTip = false;  // 阻止vue在启动时自动生产提示new Vue({el: '#root',data: {firstName: 'mq',lastName: 'tjc'},computed: {// 完整写法fullName:{// get:当有人读取fullName时,get 就会被调用,且返回值就作为fullName的值// get 什么时候调用? 1. 首次读取fullName的时候,get会被调用 2. 当所依赖的数据发生改变的时候,fullName也会重新读取,此时get会被调用get(){return this.firstName + this.lastName}}// 简写fullName(){return this.firstName + this.lastName}}})
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/435341.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试题】软件测试实习(含答案)

软件测试实习常见面试题&#xff0c;主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目&#xff0c;以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…

服务器几核几G几M是什么意思?如何选择?

服务器几核几G几M是什么意思&#xff1f;我们建站、搭建网络平台都要用到云服务器&#xff0c;不管在腾讯云、阿里云还是别的云服务平台选购&#xff0c;都会接触到服务器配置。云服务器就是把物理服务器&#xff08;俗称“母鸡”&#xff09;&#xff0c;用虚拟机技术虚拟出多…

FreeRTOS学习笔记一——FreeRTOS介绍

RTOS学习笔记&#xff0c;主要参考正点原子教程 目录 FreeRTOS特点任务调度方式抢占式调度时间片调度 任务状态状态转换任务列表 FreeRTOS特点 实现多个任务功能划分延时函数实现任务调度高优先级抢占低优先级每个任务都有自己的栈空间 注意&#xff1a; 中断可以打断任意任务…

设计模式之享元(Flyweight)模式

前言 面向对象很好地解决了 “抽象” 的问题&#xff0c;但是不可避免的要付出一定的代价。对于通常情况来讲&#xff0c;面向对象的成本大都可以忽略不计。但是某些情况&#xff0c;面向对象所带来的成本必须谨慎处理 具体需要自己根据需求去评估 定义 “对象性能” 模式。运用…

探索基于知识图谱和 ChatGPT 结合制造服务推荐前沿

0.概述 论文地址&#xff1a;https://arxiv.org/abs/2404.06571 本研究探讨了制造系统集成商如何构建知识图谱来识别新的制造合作伙伴&#xff0c;并通过供应链多样化来降低风险。它提出了一种使用制造服务知识图谱&#xff08;MSKG&#xff09;提高 ChatGPT 响应准确性和完整…

探索顶级低代码开发平台,实现创新

文章盘点ZohoCreator、OutSystems等10款顶尖低代码开发平台&#xff0c;各平台以快速开发、集成、数据安全等为主要特点&#xff0c;适用于不同企业需求&#xff0c;助力数字化转型。 一、Zoho Creator Zoho Creator 是一个低代码开发平台&#xff0c;它简化了应用开发中的复杂…

小程序视频编辑SDK解决方案,轻量化视频制作解决方案

面对小程序、网页、HTML5等多样化平台&#xff0c;如何轻松实现视频编辑的轻量化与高效化&#xff0c;成为了众多开发者和内容创作者共同面临的挑战。正是洞察到这一市场需求&#xff0c;美摄科技推出了其领先的小程序视频编辑SDK解决方案&#xff0c;为创意插上翅膀&#xff0…

2024前端技术发展概况

当前前端技术呈现出多方面的发展态势&#xff0c;以下是详细介绍&#xff1a; 前端框架不断演进&#xff1a; React&#xff1a;作为流行的前端框架之一&#xff0c;React 依旧保持着强大的生命力。它具有高效的虚拟 DOM 机制&#xff0c;能够快速更新和渲染页面&#xff0c;极…

pdf页面尺寸裁减

1、编辑pdf 2、点击裁减页面&#xff0c;并在空白区域双击裁减 3、输入裁减数据&#xff1a;

【易上手快捷开发新框架技术】nicegui标签组件lable用法庖丁解牛深度解读和示例源代码IDE运行和调试通过截图为证

传奇开心果微博文系列 序言一、标签组件lable最基本用法示例1.在网页上显示出 Hello World 的标签示例2. 使用 style 参数改变标签样式示例 二、标签组件lable更多用法示例1. 添加按钮动态修改标签文字2. 点击按钮动态改变标签内容、颜色、大小和粗细示例代码3. 添加开关组件动…

Angular基础学习(入门 --> 入坑)

目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 &#xff08;ViewChild&#xff09; 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …

关于vue2+uniapp+uview+vuex 私募基金项目小程序总结

1.关于权限不同tabbar处理 uniapp 实现不同用户展示不同的tabbar(底部导航栏)_uniapp tabbar-CSDN博客 但是里面还有两个问题 一个是role应该被本地存储并且初始化 第二个问题是假设我有3个角色 每个角色每个tabbar不一样的&#xff0c;点击tabbar时候会导致错乱 第三个问题…

Windows11安装Docker Desktop教程

目录 一.安装前置步骤 ▐ 开启虚拟化 ▐ 安装WSL2 ▐ 安装Linux环境 二.Windows上安装Docker 一.安装前置步骤 ▐ 开启虚拟化 首先确保虚拟化的开启&#xff0c;打开任务管理器后查看&#xff1a; 确保图中的虚拟化是已启用&#xff0c;没有开启的需要通过BIOS进行开启&…

基于php的在线租房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

MySQL-联合查询

1.简介 1.1为什么要使用联合查询 在数据设计时由于范式的要求&#xff0c;数据被拆分到多个表中&#xff0c;那么要查询⼀个条数据的完整信息&#xff0c;就 要从多个表中获取数据&#xff0c;如下图所⽰&#xff1a;要获取学⽣的基本信息和班级信息就要从学⽣表和班级表中获…

全网最全软件测试面试题(含答案解析+文档)

一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到开发成功投入使用&#xff0c;并在使用中不断地修改、增补和完善&#xff0c;直到停止该软件的使用的全过程(从酝酿到…

修改Opcenter EXFN 页面超时时间(Adjust UI Session Extend Token)

如果你想修改Opcenter EXFN中页面Session的超时时间&#xff0c;你可以按照如下步骤修改SessionAge 这个参数&#xff1a; 管理员运行CMD执行以下命令 umconf -getconfig -file C:\temp\config.json如果第2步有报错&#xff0c;则执行步骤4;如果没有报错则执行第5步如果第2步…

react-问卷星项目(2)

流程 husky 一个git hook 工具&#xff0c;即在git commit之前执行自定义的命令&#xff0c;将规范流程化&#xff0c;如执行代码风格的检查&#xff0c;避免提交非规范的代码&#xff0c;在github搜索即可。 这两条是接着执行的&#xff0c;表示创建husky&#xff0c;在文档…

C++【类和对象】(取地址运算符重载与实现Date类)

文章目录 取地址运算符重载const成员函数取地址运算符重载 Date类的实现Date.hDate.cpp1.检查日期合法性2. 构造函数/赋值运算符重载3.得到某月的天数4. Date类 - 天数的操作4.1 日期 天数4.2 日期 天数4.3 日期 - 天数4.4 日期 - 天数 5. Date的前后置/--5.1 前置5.2 后置5.…

fastadmin搜索刷新列表,怎么限制用户频繁点击?

文章目录 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f;解决方案fastadmin事件方法实现完结 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f; fastadmin目前有个很致命的问题&#xff0c;就是用户可以频繁的点击搜索等按钮&#xf…