| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Vue 中的MVVM -> 正文阅读 |
|
[JavaScript知识库]Vue 中的MVVM |
?View层:1、视图层 2、在前端开发中,通常就是 DOM 层 3、主要的作用是给用户展示 各种信息 Model层:1、数据层 2、数据可能是我们固定的死数据,更多的是来自服务器,从网络上请求下来的数据 3、在计数器案例中,就是后面取出来的obj,当然,里面的数据可能没有这么简单 VueModel层:1、试图模型层 2、视图模型层是View和 Model 沟通的桥梁 3、一方面它实现了Data Binding,也就是数据绑定,将Model 的改变实时的反应到 View中 4、另一方面它实现了DOM Listener ,也就是DOM监听,当DOM 发生一些事件(点击、滚动、touch等)时,可以监听到,并在需要的情况下改变对应Data 创建Vue 实例传入optionsel:????????类型:string | HTMLElement ????????作用:决定之后Vue 实例会管理哪一个DOM data:????????类型:Object | Function (组件当中data 必须是一个函数) ????????作用:Vue实例对应的数据对象 methods:????????类型:{ [key:string] :Function} ? ? ? ? 作用:定义属于Vue的一些方法? 什么是计算属性众所周知,在模板中可以直接通过插值语法显示一些data中的数据 但是在某些情况,我们可能需要对数据进行一些转化后再显示,或者需要将多个数据结合起来进行显示 ? ? ? ? 比如:firstName 和 lastName 两个变量,我们需要显示完整的名称 ? ? ? ? 但是如果多个地方都需要显示完整的名称,我们就需要写多个{{firstName}}? {{lastName }} 我们可以将上面的代码换成计算属性,计算属性是写在computed选项中
? ? ? ? 计算属性的setter 和 getter每个计算属性都包含一个 getter 和 setter ? ? ? ? 上面的例子是指使用getter来读取 ? ? ? ? 在某些情况下,也可以提供一个setter方法,但是不常用
事件监听在前端开发中,我们需要经常和用户交互 ? ? ? ? 这个时候,就必须监听用户发生的时间,比如点击、拖拽、键盘事件等等 ? ? ? ? 使用 v-on 来监听事件 let 与 var?实际上,var 的设计可以看成是JavaScript语言设计上的错误,但是这种错误多半不能修复和移除,以为需要向后兼容 let 可以看成更完美的 var 块级作用域? ? ? ? js 中使用 var 来声明一个变量时,变量的作用域主要是和函数的定义有关 ? ? ? ? 针对于其他块定义来说是没有作用域的,比如 if / for 等,这个在开发过程中会引起一些问题 ES5 中,var 是没有块级作用域的,比如if? 和 for ES6 中,let 是有块级作用的?,比如if? 和 for
?ES5之前因为 if 和 for 都没有块级作用域的概念,所以在很多时候,我们都必须借助于 function的作用域来解决应用外面变量的问题
const的使用const 关键字,在很多语言中已经存在,比如C/C++中,主要的作用是将某个变量修饰为常量 在JavaScript中也一样,使用const修饰的标识符为常量,不可以再次赋值 什么时候使用const?当修饰的标识符不会被再次赋值时,就可以使用const来保证数据的安全性 建议:在开发中,优先使用const,只有需要改变某一个标识符的时候,才使用let const的注意(一)
(二)
对象增强写法
event事件?
v-on 修饰符在某些情况下,我们拿到的event的目的可能是进行一些事件处理 Vue 提供了修饰符来帮助我们方便的处理一些事件: .stop - 调用 event.stopPropagation() .prevet - 调用 event.preventDefault() {keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调 .native - 监听组件根元素的源生事件 .once - 只触发一次回调
v-if、v-else-if、v-else这三个指令与 JavaScript 的条件语句if 、else 、else if类似 Vue 的条件指令可以根据表达式的值在DOM 中渲染或销毁元素或组件
推荐写法:
v-if 的原理v-if 后面的条件为false 时,对应的元素以及其子元素不会渲染 也就是根本没有不会有对应的标签出现在DOM 中 小问题:? ? ? ? 如果我们在输入内容的情况下,切换了类型,我们会发现文字依然显示之前的输入的内容 ? ? ? ? 但是按道理讲,我们应该切换到另外一个input 元素中了 ? ? ? ? 在另一个input元素中,我们并没有输入内容 问题解答:? ? ? ? 这是因为 Vue 在进行DOM 渲染时,出于性能考虑,会尽可能的复用已经存在的元素,而不是重新创建新的元素 ? ? ? ? 在上面案例中,Vue 内部会发现原来的 input 元素不再使用,直接作为else 中的 input 来使用 解决方案:? ? ? ? 如果我们不希望Vue 出现类似重复利用的问题,可以给对应的 input 添加key? ? ? ? ? 并且需要包装key 不同
v-for 遍历数组当我们有一组数据需要进行渲染时,我们就可以使用v-for来完成 ? ? ? ? v-for 的语法类似于JavaScript 中的 for 循环 ? ? ? ? 格式:item in items 形式 简单案例: 如果在遍历的过程中不需要使用索引
如果在遍历过程中,西药拿到元素的数组索引值
组件key 属性官方推荐我们在使用 v-for 时,给对应的元素或组件添加上一个? :key属性 key 的作用主要是为了高效的更新虚拟DOM 检测数组更新push()? :在数组最后一个添加多个元素 pop()? ?: 删除数组中的最后一个元素 shift()? :??删除数组中的第一个元素 unshift()? :在数组最前面添加多个元素 splice(n,m,'k')? : 在数组的第n个元素后面删除m个长度并添加k sort() reverse()? : 颠倒数组位置 表单绑定 v-model表单控件在实际开发中是非常常见的,特别是对用户信息的提交,需要大量的表单 Vue 中使用 v-model 指令来实现表单元素和数据的双向绑定 案例分析: 当我们在输入框输入内容时 因为input中的 v-model 绑定了message,所以会实时将输入的内容传递给message,message发送改变 当message发送改变时,因为我们使用Mustache语法,将message 的值插入到DOM 中,所以DOM会发生相应的改变 所以,通过 v-model 实现双向绑定
方法二:
原理v-model 其实是一个语法糖,它的背后本质是是包含两个操作: 1、v-bind 绑定一个 value属性 2、v-on 指令给当前元素绑定 input 也就是说
等同于
v-model:radio当存在多个单选框时 可以同时定义相同的name属性,是单选框不能同时选定 或者可以绑定相同的 v-model 属性
v-model:checkbox 复选框分为两种情况:单个勾选和 多个勾选
v-model:select和 checkbox 一样,select 也分为单选和 多选两种情况 单选:只能选中一个值 ? ? ? ? v-model绑定的是一个值 ? ? ? ? 当我们选中option 中的一个时,会将它对应的 value 赋值到 mySelect 中
多选:可以选中多个值 ? ? ? ? v-model 绑定的是一个数组 ? ? ? ? 当选中多个值时,就会将选中的 option 对应的 value 添加到数组 mySelect 中 要摁住Ctrl 键
v-model的修饰符lazy 修饰符:? ? ? ? 默认情况下,v-model默认是在input事件中同步输入框的数据的 ? ? ? ? 也就是说,一旦有数据发生改变对应的data中的数据就会自动发生改变 ? ? ? ? lazy修饰符可以让数据在失去焦点或者回车是才会更新
number 修饰符:? ? ? ? 默认情况下,在输入框中无论我们输入的是字母还是数字,都会被当做字符串类型进行处理 ? ? ? ? 但是如果我们希望处理的是数字类型,那么最好直接将内容当做数字处理 ? ? ? ? number 修饰符可以让在输入框中输入的内容自动转成数字类型
trim 修饰符:? ? ? ? 如果输入的内容收尾有很多空格,通常我们希望将其去除 ? ? ? ? trim修饰符可以过滤内容左右两边的空格
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:29:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |