vue基础(总结很详细)

vue 基础
1. vue 是什么?
Vue.js (读音 /vju ː /, 类似于 view ) 是一套构建用户界面的渐进式框架。
Vue 只关注视图层, 采用自底向上增量开发的设计。
Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
官网地址 API https://cn.vuejs.org/v2/guide/index.html
2. MVVM 是什么?
MVC 拆分解释:
视图( View ):用户界面。
控制器( Controller ):业务逻辑
模型( Model ):数据保存
MVC 通信方式
View 传送指令到 Controller
Controller 完成业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View ,用户得到反馈
MVC 框架局限性
View 里会包含业务逻辑
View 当中的业务逻辑无法重用
模型的代码少,控制器的代码却是越写越多
MVVM 拆分解释:
Model: 负责数据存储
View: 负责页面展示
View Model: 负责业务逻辑处理(比如 Ajax 请求等),对数据进行加工后交给视图展示
3. 为什么要使用 MVVM
1. 低耦合。视图( View )可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同
"View" 上,当 View 变化的时候 Model 可以不变,当 Model 变化的时候 View 也可以不变
2. 可重用性。你可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑
3. 独立开发。开发人员可以专注于业务逻辑和数据的开发( ViewModel ),设计人员可以专注
于页面设计
5. Vue.js 起步
实现步骤
第一步:下载 Vue.js 库并引入
<script type="text/javascript" src="vue.js"></script>

第二步 :创建 view 视图
<div id="box"> //确定一个范围,表示此范围内部都是 vue解析出来的
<h1> {{ msg }} </h1>
</div>

第三步 通过 Vue 实例化一个 vue 对象
​
var vm = new Vue({
el: '#box', // el:‘选择器’
data: {
msg: 'hello, world!'
},
// 实例中,可以设置很多配置项
});​

第四步 使用数据
data 中变量 msg 放在 #box 内的双花括号内
修改 data 中的 msg ,会同步显示在页面中
实现原理分析
DOM 监听
视图层发生变化, DOM 监听到之后,会传到逻辑层进行处理
数据绑定
逻辑层把数据处理完成之后,通过数据绑定,把处理后的结构返回给视图层
6. 插值表达式
使用双大括号来包裹 js 代码构成插值表达式 , 如: {{msg}}
插值表达式将双大括号中的数据替换成对应属性值进行展示 , 也叫模板语法
插值表达式中可以写入哪些内容?
1. JSON 数据
<div id="wzy">
<p>{{obj.name}}</p>
</div>
<script>
new Vue({
el: '#wzy',
data: {
message: 'hello world',
obj:{ //插入json数据
name:'tom',
age:20
}
}
})
</script>

2. 数字 <p>{{ 10 }}</p>
3. 字符串 {{ "wzy" }}
4. 表达式 <h1>{{ 2>3?'true':'false' }}</h1>
注意:在表达式中可以调用 js 函数。如 {{msg.charAt(0)}}
7. Vue 指令
什么是 Vue.js 指令
指令( Directive )是特殊的带有 v- 前缀的特性
7.1 v-if 指令
被称为条件渲染指令,它根据表达式的真假来插入和删除元素
v-if = ' 表达式 '
根据表达式结果的真假,确定是否显示当前元素
true 表示显示该元素; false 表示隐藏该元素
<div id="wzy">
<p v-if="isShow">表达式的值为真,我就能显示</p>
</div>
var app3 = new Vue({
el: '#wzy',
data: {
isShow: true
}
})
7.2 v-else 指令
v-else 指令为 v-if 添加一个 “else v-else 元素必须立即跟在 v-if 元素的后面,否则不能被识别
v-else 后面不需要表达式
v-if true ,后面的 v-else 不会渲染到 HTML
v-if false ,后面的 v-else 才会渲染到 HTML
<body>
<div id="wzy">
<h1 v-if="isShow">表达式的值为真,我就能显示</h1>
<h1 v-else>v-if不成立的时候,我就显示出来了</h1>
</div>
</body>
<script src="js/vue.js"></script>
<script>
new Vue({
el: '#wzy',
data: {
isShow: false
}
})
</script>

7.3 v-show 指令
控制切换一个元素的显示和隐藏
v-show = ‘ 表达式
根据表达式结果的真假,确定是否显示当前元素( true 表示显示该元素; false 表示隐藏该元素)
<div class="div1" v-show='isShow'></div>

v-if v-show 区别
v-show 指令的元素始终会被渲染到 HTML
它只是简单地为元素设置 CSS style 属性。当不满足条件的元素被设置 style="display:none" 样式
v-if 指令满足条件是,会渲染到 html 中,不满足条件时,是不会渲染到 html 中的
v-if v-show 应用场景
v-if 指令有更高的 切换消耗
v-if 当条件成立的时候会将元素加上,不成立的时候,就会移除 dom ,并且内部的指令不会执行
v-show 指令有更高的 初始渲染消耗
v-show 只是简单的隐藏和显示
如果需要频繁切换使用 v show 较好,如果在运行时条件不大可能改变 使用 v if 较好
7.4 v-on 指令
HTML 元素绑定事件监听
v-on :事件名称 =‘ 函数名称 ()’ @ 事件名称 =‘ 函数名称 ()’
<button v-on:click='fn()'>toggle</button>
//v-on: 可以简写成 @
<button @click='fn()'>toggle</button>
<body>
<div id="wzy">
<a v-on:click="show()">点击测试</a>
</div>
</body>
<script src="js/vue.js"></script>
<script>
new Vue({
el: '#wzy',
data: {
},
methods: {
show:function(){
alert("测试");
}
}
})
</script>

注意:函数定义在 methods 配置项中
案例:
<style type="text/css">
.div1 {
width: 100px;
height: 100px;
background: red;
margin-top: 20px;
}
</style>
<body>
<!-- view -->
<div id="box">
<!--第一种:click事件直接绑定一个方法,没有参数情况下,方法后面的括号可以去掉-->
<!-- <button v-on:click='fn()'>toggle</button> -->
<button v-on:click='fn'>toggle</button>
<!-- v-on: 可以简写成 @ -->
<!-- <button @click='fn()'>toggle</button> -->
<br/>
<div class="div1" v-show='bol'></div>
<!--第二种:传参情况下,click事件使用内联语句-->
<button v-on:click="say('Hi')">Hi</button>
</div>
</body>
<script src="js/vue.js"></script>
<script type="text/javascript">
// 实例化对象
var vm = new Vue({
el: '#box',
data: {
// 数据
bol: false
},
// 事件统一写在methods里面
methods: {
fn: function() {
this.bol = !this.bol;
},
say: function(msg) {
alert(msg);
}
}
});
</script>

< 7.5 v-model 指令
能轻松实现表单输入和应用状态之间的 双向绑定
双向绑定
指的是我们在 vue 实例中的 data 与其渲染的 dom 元素上的内容保持一致,两者无论谁被改变,另
一方也会相应的更新为相同的数据
v-model = ‘ 变量
v-model 指令只能用在
</span></p><pre>等这些表单元素

<body><div id="box"><input type="text" v-model='msg'></input><h1>{{ msg }}</h1><!-- v-model:进行双向绑定的(把用户输入的内容,同步显示在页面上)语法:v-model='变量'注:使用在表单元素上(常用在 type类型为text 上)--></div>
</body>
</html>
<script type="text/javascript">var vm = new Vue({el: '#box',data: {msg: 'hello'}});
</script>

7.6 v-bind 指令

v-bind 可以在其名称后面带一个参数,参数通常是 HTML 元素的特性( attribute ), v-bind 是动态绑定指令,默认 情况下自带属性的值是固定的,为了能够动态的给这些属性添加值可以使用v-bind 指令
v-bind: 属性名 = ‘ 表达式
简写形式: v-bind 可以省略,直接书写为 : 属性名 = ‘ 表达式
<img v - bind:src="imageSrc"> 等价于 <img :src="imageSrc"> // 绑定一个属性
<div id="box">
<!-- 第一种:图片的url地址 -->
<img v-bind:src="imageSrc">
<!-- 第二种:动态类名 v-bind:class={类名:表达式} -->
<div v-bind:class="{ divclass: isRed }"></div>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#box',
data: {
// 第一种:图片地址
imageSrc: "images/1.png",
// 第二种:class类名
isRed: true
}
});
</script>

7.7 v-for 指令
遍历 data 中的数据,并在页面进行数据展示
v-for = ‘(item, index) in items’
1. item 表示每次遍历得到的元素
2. index 表示 item 的索引,可选参数
3. items 表示数组或者对象
<body>
<div id="app">
<ul>
<!-- 1、遍历对象
value :表示对象的属性值
key :当前对象的属性名
index:当前对象的索引值
-->
<!-- <li v-for="(value, key, index) in person">
{{index}} - {{key}} - {{value}}
<br>
</li> -->
<!-- 2、遍历数组
item: 代表遍历的每一个数组对象
index:当前数组对象的索引值
-->
<!-- <li v-for="(item,index) in lesson">
{{index}} - {{item.name}} - {{item.type}}
<br>
</li> -->
<!-- 3、双层嵌套
把课程中内容遍历出来
-->
<!-- <li v-for="(item,index) in lesson">
<span v-for="(childValue,index) in item.type">
{{index}} - {{childValue}} <br>
</span>
</li> -->
<!-- 4、key 属性 :更高效的去重用和重新排序现有元素
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每
项提供一个唯一 key 属性。理想的 key 值是每项都有的且唯一的 id。
建议尽可能在使用 v-for 时提供 key,除非遍历输出的 DOM 内容非常简单
key的工作方式类似于一个属性,所以你需要用 v-bind 来绑定动态值 ,这里使用简写形式完成
-->
<li v-for="(item,index) in lesson" :key="index">
<!-- 这的 index是 唯一的存在,可以使用,如果有其他的也可以使用 -->
{{index}} - {{item.name}} - {{item.type}}
<br>
</li>
</ul>
</div>
</body>
</html>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data: {
person: {
name: 'zfpx',
age: 7,
},
lesson: [
{ name: '前端三大块', type: ['HTML', 'CSS', 'JavaScript'] },
{ name: '前端三大框架', type: ['vuejs', 'react', 'angularjs'] },
]
}
});
</script>
8. 总结
v-if :根据表达式的真假来插入和删除元素
v-else v-else 指令为 v-if 添加一个 “else
v-show :控制切换一个元素的显示和隐藏
v-on :为 HTML 元素绑定事件监听
v-model :将用户的输入同步到视图上
v-bind :绑定 HTML 元素的属性
v-for :遍历 data 中的数据,并在页面进行数据展示
vue 优点
简洁: HTML 模板 、 Vue 实例 、 JSON 数据
轻量: 35K ,性能好
渐进式:边学边用
设计思想:视图与数据分离,无需操作 DOM
社区:大量的中文资料和开源案例

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

set的基本用法 和 底层简单了解

在前面&#xff0c;已经了解过搜索二叉树了&#xff0c;也了解了一点红黑树的内容&#xff08;不太了解的可以先查看前面的内容哦&#xff09;&#xff1b;现在我们了学习一下&#xff0c;底层以红黑树实现&#xff0c;遍历以搜索树的中序实现的set/multset&#xff1b; 序列式…

Java | Leetcode Java题解之第470题用Rand7()实现Rand10()

题目&#xff1a; 题解&#xff1a; class Solution extends SolBase {public int rand10() {int a, b, idx;while (true) {a rand7();b rand7();idx b (a - 1) * 7;if (idx < 40) {return 1 (idx - 1) % 10;}a idx - 40;b rand7();// get uniform dist from 1 - 63…

如何实现MySQL异地多活场景

作为现代化的互联网企业 &#xff0c;最怕的是什么 &#xff1f;是意外&#xff01;由各种意外导致的数据库问题&#xff0c;磁盘问题、网络问题、人员误操作问题等等&#xff0c;这些问题都可能导致数据不可用或者丢失&#xff0c;造成重大损失。因此&#xff0c;很少会有企业…

【AI系统】AI 学习方法与算法现状

在人工智能&#xff08;AI&#xff09;的漫长历史中&#xff0c;我们见证了从早期的规则驱动系统到现代的机器学习模型的转变。AI的学习方法是其进步的核心&#xff0c;而算法现状则反映了当前技术的高度和未来的发展方向。 Ⅰ.AI 学习方法 AI的工作原理基于深度神经网络&…

24.4 基于consul服务发现模式

本节重点介绍 : consul 安装consul go代码注册服务&#xff0c;注销服务&#xff0c;获取服务node_exporter改造为consul服务发现在数量比较大时&#xff0c;在注册服务的时候&#xff0c;关闭check&#xff0c;可以降低consul的压力 consul 安装 准备工作 # 下载consul wge…

C++ | Leetcode C++题解之第470题用Rand7()实现Rand10()

题目&#xff1a; 题解&#xff1a; class Solution { public:int rand10() {int a, b, idx;while (true) {a rand7();b rand7();idx b (a - 1) * 7;if (idx < 40) {return 1 (idx - 1) % 10;}a idx - 40;b rand7();// get uniform dist from 1 - 63idx b (a - 1)…

hadoop入门

1.1 hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;主要是解决海量数据的存储和海量数据的分析计算的问题。通常Hadoop指的是一个更为广泛的概念Hadoop生态圈 1.2 hadoop发展历程 Hadoop创始人Doug Cutting&#xff0c;为了实现与Google类…

小猿口算APP脚本(协议版)

小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…

数据结构前置知识(下)

1. 包装类 Java为了让基本数据类型也能够继承Object,因此给每个基本数据类型提供了包装类, 这样就可以和平常的引用数据类型一样使用了,并且也可以应用在泛型上(后续讲) 基本数据类型包装类byteByteshortShortintIntergerlongLongfloatFloatdoubleDoublecharCharacterboolean…

在IDEA里用XDebug调试PHP,断点....

做程序开发,调试必不可少,这里最近用到了PHP,顺便写个关于PHP的调试安装使用: 1、首先是PHP先安装xdebug扩展(还有zend的),这个我的工具是IDEA,所以安装方法也相对简单,如果你是用VSCode等应该也是一样,如下图,找到这个PHP->DEBUG 2、直接点上面的Install XDebug 就可以帮你…

潜水打捞系统助力,破解汽车打捞难题

随着人类活动的不断扩展&#xff0c;汽车落水事故频发&#xff0c;成为救援工作中的一大难题。汽车因其重量和结构特性&#xff0c;一旦沉入水体&#xff0c;打捞工作将面临巨大挑战。传统的打捞方法往往效率低下&#xff0c;且在操作过程中可能会对汽车造成进一步的损害&#…

JMeter性能测试时,如何做CSV参数化

在现代软件开发中&#xff0c;性能测试是保证应用程序在高负载条件下稳定运行的重要环节。为了实现真实场景的测试&#xff0c;参数化技术应运而生。其中&#xff0c;CSV参数化是一种高效且灵活的方法&#xff0c;可以让测试人员通过外部数据文件驱动测试脚本&#xff0c;从而模…

九寨沟,智慧旅游新名片

九寨沟属于自然类景区&#xff0c;以优美的自然风光取胜&#xff0c;景区文化内涵相对缺失。智慧化和文旅融合是智慧文旅景区的两个必备条件&#xff0c;九寨沟在智慧文旅景区建设过程中&#xff0c;经历了两个阶段&#xff0c;先是从传统景区迈向智慧景区&#xff0c;然后是充…

Arduino UNO R3自学笔记24 之 Arduino如何使用MAX7219控制多个数码管?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:前面学习了单个数码管的控制,但是在大多场合一个数码管是满足不了使用场景的,因此对于数码管的学习,应该学会用尽可能少的端口去驱动更多的数码管,在此情况下,MAX7219比较适合我们使用。 1.M…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

springmvc直接访问 上下文路径 302 后路径更改并跳转源码解析

【问题现状】 application.yml 配置如下属性&#xff1a; server:servlet:context-path: /learning直接访问&#xff1a;http://localhost:8888/learning 路径时&#xff0c;会返回302的响应状态&#xff1b;并跳转路径&#xff1a;http://localhost:8888/learning/ (原路径后…

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十七章 交叉编译器的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

STM32 实现 TCP 服务器与多个设备通信

目录 一、引言 二、硬件准备 三、软件准备 四、LWIP 协议栈的配置与初始化 五、创建 TCP 服务器 1.创建 TCP 控制块 2.绑定端口 3. 进入监听状态 4.设置接收回调函数 六、处理多个客户端连接 七、数据处理与通信管理 八、错误处理与资源管理 九、总结 一、引…

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶项目】HC-SR04超声波模块实验

1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …

华为云应用侧Android Studio开发

本文将介绍如何使用AndroidStudio开发APP完成与接入华为云IoTDA设备的对接&#xff0c;包括属性参数获以及取命令下发。 一、鉴权认证 应用侧需要通过IAM服务鉴权&#xff0c;获取token&#xff0c;华为账号创建 IAM 用户&#xff0c; 可以为创建的用户分配权限 认证鉴权_设…