Vue.js期末考复习总结,看这一篇就够了

2024-01-01 13:10

本文主要是介绍Vue.js期末考复习总结,看这一篇就够了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 前言
  • 因为刚好学校期末考就总结了一下。在我的博客里有更多自己总结的东西哦欢迎访问✧*。٩(ˊᗜˋ*)و✧*。点我点我

第一章

MVVM 概念

  • Model-View-ViewModel,模型-视图-视图模型,连接view和model的桥梁。
  • 两个方向,一个模型转换成视图,一个视图转换成模型,实现方式是DOM事件监听。

Vue是渐进式JS框架,渐进式的意义是什么

  • 阶段性
  • 可以作为嵌入服务端应用的一部分
  • 可供使用的api丰富
  • vue可以用自带命令行快速初始化项目

单页面应用及其优缺点

  • SPA,即只有一个主页面的应用。所有内容都在一个html里
  • 优点
    • 前后端分离
    • 用户体验良好
    • 减轻服务端压力
    • 共用一套后端程序代码
  • 缺点
    • 不利于SEO优化
    • 首屏加载过慢

第二章

创建Vue实例

var app = new Vue({...})

数据与方法

  • Object.freeze(),冻结一个对象,使对象不能被修改。
  var obj = {foo: '10'}Object.freeze(obj);new Vue({el: '#app',data: obj})

生命周期与钩子函数


  • 在这里插入图片描述

  • 钩子函数参数

    • 指令钩子函数会被传入以下参数:
    • el:指令所绑定的元素,可以用来直接操作 DOM 。
    • binding:一个对象,包含以下属性:
    • name:指令名,不包括 v- 前缀。
    • value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
    • oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
    • expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
    • arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
    • modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
    • vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
    • oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

计算属性

  • 和methods的不同:在调用methods里的一个方法时,所有方法都会调用(都会遍历一遍)
<div id="example"><p>Original message: "{{ message }}"</p><p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({el: '#example',data: {message: 'Hello'},computed: {// 计算属性的 getterreversedMessage: function () {// `this` 指向 vm 实例return this.message.split('').reverse().join('')}}
})
  • 插值

    • 文本
    {{message}}
    
    • 原式html, 在这样绑定data里的message属性
    <p v-html="message"></p>
    
    • JavaScript表达式
    {{a+b+c}}
    
  • 缩写

    • v-bind缩写:
    • v-on缩写@

第三章

侦听属性

  • 其实就是用key-value的形式定义和绑定数据,其中key是被监听对象,value可以是字符串,方法,函数,对象
  • 如果不启用深度遍历,value是对象的时候新旧值是一样的,因为他们指向同一个对象
  • 在下面的例子里,输入1234,则new是1234,old是123(输入过的数)
watch: {message: function(newValue, oldValue) {console.log("新" + newValue + "旧" + oldValue)}
}

过滤器

  • 作用:对数据进行筛选,过滤,格式化
  • 全局和局部过滤器重名,会采用全局过滤器。
//全局过滤器
Vue.filter('captitalize', function(value){...
})
//局部过滤器
falters: {capitalize: function(value) {...}
}

第四章

基本指令

  • v-cloak,解决网速较慢页面加载闪烁问题
  • v-once, 被标记的元素和组件只渲染一次
  • v-html和v-text的区别是text就是text,html就是html被解析过后渲染的结果

条件渲染

  • v-if
<div v-if="type === 'A'">A
</div>
<div v-else-if="type === 'B'">B
</div>
<div v-else-if="type === 'C'">C
</div>
<div v-else>Not A/B/C
</div>
  • key,表达这两个信息元素是完全独立的,不可复用。常见于表单绑定
<template v-if="loginType === 'username'"><label>Username</label><input placeholder="Enter your username" key="username-input">
</template>
<template v-else><label>Email</label><input placeholder="Enter your email address" key="email-input">
</template>
  • v-if和v-show的区别
    • v-if是达到条件才渲染元素,并且能确保条件块内事件监听器会被销毁和重建
    • v-show是无论初始条件是什么,元素都会被渲染

列表渲染

  • v-for遍历数组
<ul id="example-2"><li v-for="(item, index) in items">{{ parentMessage }} - {{ index }} - {{ item.message }}</li>
</ul>
var example2 = new Vue({el: '#example-2',data: {parentMessage: 'Parent',items: [{ message: 'Foo' },{ message: 'Bar' }]}
})
  • v-for遍历对象
<ul id="v-for-object" class="demo"><li v-for="value in object">{{ value }}</li>
</ul>
new Vue({el: '#v-for-object',data: {object: {title: 'How to do lists in Vue',author: 'Jane Doe',publishedAt: '2016-04-10'}}
})
  • v-for和v-if一起用
<div id="app"><h3>没有报道的学生名单</h3><ul><li v-for="n in items" v-if="!n.value">{{n.name}}</li></ul>
</div>
<script>var app = new Vue({el: '#app',data: {items: [{name: '小明',},{name: '小红', value:'已报道'},{name: '小华', value: '已报道'},{name: '小思',},]}})
</script>

数组更新检测

  • 变异方法
    • push(),接收任意参数并添加到数组末尾,返回修改后数组长度
    • pop()从数组末尾移除最后一项,返回删除后的数组长度
  • 替换数组
    • filter(), 对数组中每一项运行给定函数,该函数会返回true的项组成的数组
    • 注意,这里的filter()和前面的过滤器区别就是这里是不改变原有数组,在这里自己生成一个新的反应出来,而
      之前的过滤器是直接覆盖原有数组修改的

自定义指令

  • 两种写法
<div id="app"><input v-focus></input>
</div>
<script>
//全局指令
Vue.directive('focus', {inserted: function(el) {el.focus}
})
//局部指令
var app = new Vue({el: '#app',directives: {focus: {//指令。。。}}
})
</script>

疑难困惑

  • vue2.0中,v-for的:key作用是什么?
    • 给vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有的元素,需要为每项提供一个唯一的key。

第五章

绑定html样式

  • Class数组语法
<style>.style1 {color: white;}.style2 {color: black;}
</style>
<div id="app"><div v-bind:class="{ 'style1', 'style2' }">{{message}}</div>
</div>
<script>new Vue({el: '#app',data: {message: '数组语法'}})
</script>
  • Class对象语法
<style>.static {color: #3a8ee6;}.style1 {color: white;}.style2 {color: black;}
</style>
<div id="app"><div class="static" v-bind:class="{style1: boole1, 'style': boole2}"></div>
</div>
<script>new Vue({el: '#app',data: {boole1: true,boole2: true}})
</script>

绑定内联样式

  • 对象语法
<div id="app"><div v-bind:style="{color:'red', fontSize:'30'}">对象语法</div>
</div>
<script>new Vue({el: '#app',})
</script>
  • 数组语法
<div id="app"><div v-bind:style="[styleObj1, styleObj2]">对象语法</div>
</div>
<script>new Vue({el: '#app',data: {styleObj1:{color: 'blue'}},computed: {styleObj2:function (){return {padding: '30px'}}}})
</script>

第六章

事件处理

  • 多个事件调用方法
<div id="app"><div>单击:<button v-on:click="reduce(1)">-1岁</button><button v-on:click="add(1)">+1岁</button></div><p>老王的年龄{{age}}岁</p><div>双击:<button v-on:click="reduce(10)">-10岁</button><button v-on:click="add(10)">+10岁</button></div>
</div>
<script>new Vue({el: '#app',data: {age: 50},methods: {add:function (change){this.age-=change},reduce:function (change){this.age-=change},}})
</script>

事件修饰符

  • .stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡
  • .prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播)
  • .capture:与事件冒泡的方向相反,事件捕获由外到内
  • .self:只会触发自己范围内的事件,不包含子元素
  • .once:只会触发一次
  • 用法大概是这样
<div @click.stop="inside">阻止事件</div>

按键修饰符

  • 键盘事件
    • keydown, 键盘按下时触发
    • keyup, 键盘按键抬起时触发
    • keypress, 键盘按下和抬起之间触发
  • 按键修饰符
    • .enter => // enter键
    • .tab => // tab键
    • .delete (捕获“删除”和“退格”按键) => // 删除键
    • .esc => // 取消键
    • .space => // 空格键
    • .up => // 上
    • .down => // 下
    • .left => // 左
    • .right => // 右
  • 使用
<input @keyup.enter="submit">

系统修饰键

  • 常用的系统修饰键
    • .ctrl
    • .alt
    • .shift
    • .meta
  • 用法
<!-- Alt + C -->
<input @keyup.alt.67="clear"><!-- Ctrl + Click -->
<div @click.ctrl="doSomething">做一些操作</div>

疑难解惑

  • exact修饰符怎么用
  • exact修饰符允许控制精准的系统修饰符组合触发的事件
<button @click.ctrl.exact="onClick">A</button>

第七章

表单双向绑定

  • v-model能绑定的元素:

    • text里的value和input
    • checkbox和radio里的checked和change
    • select字段将value作为prop并将change作为事件
  • 文本

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
  • 多行文本
<span>Multiline message is:</span>
<p style="white-space: pre-line;">{{ message }}</p>//pre-line的含义是合并行序列保留换行符
<br>
<textarea v-model="message" placeholder="add multiple lines"></textarea>
  • 复选框
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
  • 单选按钮
<div id="example-4"><input type="radio" id="one" value="One" v-model="picked"><label for="one">One</label><br><input type="radio" id="two" value="Two" v-model="picked"><label for="two">Two</label><br><span>Picked: {{ picked }}</span>
</div>
<script>new Vue({el: '#example-4',data: {picked: ''}})
</script>
  • 选择框
<div id="example-5"><select v-model="selected"><option disabled value="">请选择</option><option>A</option><option>B</option><option>C</option></select><span>Selected: {{ selected }}</span>
</div>
<script>new Vue({el: '...',data: {selected: ''}})
</script>
  • 多选时
多选时 (绑定到一个数组):<div id="example-6"><select v-model="selected" multiple style="width: 50px;"><option>A</option><option>B</option><option>C</option></select><br><span>Selected: {{ selected }}</span>
</div>
<script>new Vue({el: '#example-6',data: {selected: []}})
</script>

绑定选择框

<div id="app"><select v-model="selected" multiple><option :value="{num:1}">A</option><option :value="{num:2}">B</option><option :value="{num:3}">C</option><option :value="{num:4}">D</option></select><br><span>Selected: {{ selected }}</span>
</div>
<script>new Vue({el: '#app',data: {selected: []}})
</script>

修饰符

  • lazy,转变为在change事件中同步,即失焦or按enter才更新
  • number,将输入的值转成number类型
  • trim,自动过滤用户输入的首尾空格
  • 用法看着里
<input v-model.lazy="msg"></input>

第八章

组件的注册

  • 全局注册
<div id="app"><component-a></component-a>
</div>
<script>//方法1Vue.component('component-a', { /* ... */ })//方法2var component = Vue.extend({template: '<div><h3>全局组件</h3></div>>'})Vue.component('component-a', component)new Vue({ el: '#app' })
</script>
  • 局部注册
<script>var ComponentA = { /* ... */ }var ComponentB = { /* ... */ }var ComponentC = { /* ... */ }new Vue({el: '#app',components: {'component-a': ComponentA,'component-b': ComponentB}})
</script>
  • 以匿名对象的方式注册组件
<div id="app"><my-com2></my-com2>
</div>
<script>Vue.component('myCom2',Vue.extend({template: '<div>直接用component创建的组件</div>'}))new Vue({el: '#app'})
</script>
  • 注意,在上面的代码中extend创建的模板只能有且仅有一个根元素,当出现多个根元素的时候默认只渲染第一个。
    说人话就是要有div包着,不能没有div但是有h3和p两种标签,不然会只渲染前面的

组件中data的选项

  • 看代码,其实就是加了个data而已
<div id="app"><my-com></my-com>
</div>
<template id="tmp"><h3>{{name}}</h3>
</template>
<script>Vue.component('my-com', {template: '#tmp',data: function (){return {name: 'john'}}})var app = new Vue({el: '#app'})
</script>

组件间数据通信

  • 父子组件传值,父传子(用props)
<div id="app"><h3>请输入要传的值<input type="text" v-model="title"></input></h3><child-node v-bind:parentTitle="title"></child-node>
</div>
<template id="tmp"><div><h4>属性值 {{content}} </h4></div>
</template>
<script>
var app = new Vue( {el: '#app',data(){return {title:'首页',}},components:{'childNode': {template: '#tmp',props: ['parentTitle'],data() {return{content: this.parentTitle}},watch: {parentTitle: {this.content = this.parentTitle}},}}
})
</script>
  • 父子组件传值,子传父(用$emit)
<div id="app"><h3>属性值 {{msg}} </h3><child-node @show="showMsg"></child-node>
</div>
<template id="tmp"><div><h4>请输入要传的值<input type="text" v-model="childMsg"></input><button @click="func">传递</button></h4></div>
</template>
<script>
var app = new Vue( {el: '#app',data(){return {title:'',msg: ''}},components:{'childNode': {template: '#tmp',data() {return{childMsg: ''}},methods: {func() {this.$emit('show', this.childMsg)}},}}
})
</script>

这篇关于Vue.js期末考复习总结,看这一篇就够了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559345

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的