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 ),设计人员可以专注
于页面设计

4. 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 监听到之后,会传到逻辑层进行处理
数据绑定
        逻辑层把数据处理完成之后,通过数据绑定,把处理后的结构返回给视图层

5. 插值表达式

使用双大括号来包裹 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)}}

6.Vue指令

什么是 Vue.js 指令
指令( Directive )是特殊的带有 v- 前缀的特性

 

6.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}
})
6..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>
6.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 较好
6.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>
6.5 v-model 指令
能轻松实现表单输入和应用状态之间的 双向绑定
双向绑定
指的是我们在 vue 实例中的 data 与其渲染的 dom 元素上的内容保持一致,两者无论谁被改变,另
一方也会相应的更新为相同的数据
v-model = ‘ 变量
<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>

 

6.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>
6.7 v-for 指令

遍历 data 中的数据,并在页面进行数据展示
v-for = ‘(item, index) in items’
7.7 v-for 指令
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>

 

7.总结
v-if :根据表达式的真假来插入和删除元素
v-else v-else 指令为 v-if 添加一个 “else
v-show :控制切换一个元素的显示和隐藏
v-on :为 HTML 元素绑定事件监听
v-model :将用户的输入同步到视图上
v-bind :绑定 HTML 元素的属性
v-for :遍历 data 中的数据,并在页面进行数据展示

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

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

相关文章

简单学点位运算(Java)

1. 位运算符 Java中常用的位运算符如下&#xff1a; 2. 详解 &#xff08;1&#xff09;按位与 & 规则&#xff1a;同一位上全是 1 时&#xff0c;结果为 1&#xff0c;否则为 0。用途&#xff1a; 清零某些位&#xff1a;x & 0xF0可以保留高 4 位&#xff0c;清除…

637. 二叉树的层平均值【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 637. 二叉树的层平均值 一、题目描述 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 二、测试用例 示例 1&a…

111页PPT丨服装零售行业数字化时代的业务与IT转型规划

安踏的数字化转型项目在方法论、计划和组织方面展现出了明确的目标、系统的规划和有效的执行。以下是对这三个方面的详细分析&#xff1a; 方法论 安踏的数字化转型方法论主要围绕以下几个核心点展开&#xff1a; 服务于整体战略&#xff1a;数字化转型不是孤立的项目&#…

人工智能技术的应用前景与我们的应对策略

​ 大家好&#xff0c;我是程序员小羊&#xff01; 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;其在社会生活、产业转型以及科技进步中发挥着日益重要的作用。AI正逐步改变着我们的生活和工作方式&#xff0c;同时也带来了技术和伦理上的诸多挑战。本文…

基于Java Springboot论坛系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

Vue2教程001:初识Vue

文章目录 1、初识Vue1.1、Vue2前言1.2、创建Vue实例1.3、插值表达式1.4 Vue响应式特性 1、初识Vue 1.1、Vue2前言 Vue是什么&#xff1f; 概念&#xff1a;Vue是一个用于构建用户界面的渐进式框架。 Vue的两种使用方式&#xff1a; Vue核心包开发 场景&#xff1a;局部模块…

113页PPT制造业研发工艺协同及制造一体化

研发工艺协同及制造一体化解决方案是制造业数字化转型的重要组成部分&#xff0c;它涵盖了从产品设计到生产的全过程&#xff0c;旨在提高生产效率、降低成本、提升产品质量&#xff0c;并增强企业的市场竞争力。以下是对该解决方案的详细阐述&#xff1a; 一、方案概述 研发…

红外遥控信号解码

红外遥控信号解码 之前就已经做过红外遥控的解码了&#xff0c;但是一直没有做记录&#xff0c;最近的项目又使用到了红外遥控&#xff0c;索性就把他捡起来记录一下&#xff0c;对于信号的解码&#xff0c;我一般的习惯都是先用逻辑分析仪抓取一下信号波形&#xff0c;然后对…

Spring:纯注解开发模式-Ioc对bean的管理

我们知道&#xff08;请见 注解开发定义bean&#xff09;&#xff0c;可以使用注解来配置bean,但是依然有用到配置文件&#xff0c;在配置文件中对包进行了扫描&#xff0c;Spring在3.0版已经支持纯注解开发 Spring3.0开启了纯注解开发模式&#xff0c;使用Java类替代配置文件…

赛元免费开发板申请

在作者网上冲浪的时候&#xff0c;突然发现了一个国内的良心企业&#xff0c;虽然现在不是很有名&#xff0c;但是他现在是有一个样品申请的活动&#xff0c;他就是国内的Redfine新定义&#xff0c;他申请的板子是用的赛元MCU&#xff0c;作者本着有板子就要申请的原则&#xf…

【编译】多图解释 什么是短语、直接短语、句柄、素短语、可归约串

一、什么是短语二、什么是“直接”短语&#xff1f;三、什么是句柄&#xff1f;四、什么是素短语&#xff1f;五、什么是最左素短语可归约串就是“最左素短语” 首先&#xff0c;这些概念 都是相对于【句型】的&#xff0c;都是相对于【句型】的&#xff0c;都是相对于【句型】…

基础IO2

文章目录 磁盘结构磁盘存储结构磁盘的逻辑结构引入文件系统理解文件系统inode 映射 data blocks文件名与inode的关系dentry树文件描述符与进程之间的关系 深刻理解软硬链接软链接硬链接 动静态库静态库1. 手动制作静态库2.调用静态库(1)安装到系统(2)自己指定查找路径(3)自己创…

RPC-健康检测机制

什么是健康检测&#xff1f; 在真实环境中服务提供方是以一个集群的方式提供服务&#xff0c;这对于服务调用方来说&#xff0c;就是一个接口会有多个服务提供方同时提供服务&#xff0c;调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测&#xff0c;能帮助从连…

ZD Soft Screen Recorder:电脑录屏软件

前言 ZD Soft Screen Recorder 是一款屏幕录制软件 安装环境 [名称]&#xff1a;ZD Soft Screen Recorder [版本]&#xff1a;11.7.2 [大小]&#xff1a;6.8MB [语言]&#xff1a;英文 [环境]&#xff1a;pc 链接: 百度网盘 请输入提取码 提取码: ua23 软件界面 1、双击…

某杀软环境下的添加账户

某杀软环境下的添加账户 我们在某个杀软环境下&#xff0c;正常添加账户一般是会被直接拦截的 白&#xff0b;黑 在这个环境下&#xff0c;白&#xff0b;黑是最实用的绕过方式&#xff0c;我们可以通过调用winapi来创建账户&#xff0c;这些代码再存储到dll里面&#xff0c…

《Spring 基础之 IoC 与 DI 入门指南》

一、IoC 与 DI 概念引入 Spring 的 IoC&#xff08;控制反转&#xff09;和 DI&#xff08;依赖注入&#xff09;在 Java 开发中扮演着至关重要的角色&#xff0c;是提升代码质量和可维护性的关键技术。 &#xff08;一&#xff09;IoC 的含义及作用 IoC 全称为 Inversion of…

【C++】set,map,multiset,multimap的介绍和使用

set、map、multiset、multimap set、multiset的介绍和使用1、关联式容器2、键值对3、树形结构的关联式容器4、setset的介绍set的定义set的使用 5、multisetmultiset的介绍multiset的使用 map、multimap的介绍和使用1、map的介绍map的定义insert插入函数map的迭代器find查找函数…

Midjourney基础命令和提示词

1 基础命令 1.1 /imagine prompt 生成图片的核心命令&#xff0c;prompt 后输入描述。 /imagine prompt: A majestic dragon flying over a misty mountain, cinematic lighting, 4K resolution 高级提示 1.1.1 基本参数 图片比例 --ar 图片比例 混乱 Aspect Ratios --…

【代码pycharm】动手学深度学习v2-04 数据操作 + 数据预处理

数据操作 数据预处理 1.数据操作运行结果 2.数据预处理实现运行结果 第四课链接 1.数据操作 import torch # 张量的创建 x1 torch.arange(12) print(1.有12个元素的张量&#xff1a;\n,x1) print(2.张量的形状&#xff1a;\n,x1.shape) print(3.张量中元素的总数&#xff1…

智云-一个抓取web流量的轻量级蜜罐v1.5

智云-一个抓取web流量的轻量级蜜罐v1.5 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN 新增功能-自定义漏洞信息 可通过正则来添加相关路由以及响应来伪造 nacos的版本响应如下 日流量态势 月流量态势 抓取流量效果