先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
正文
el: "#app",
//3. 定义模型对象,来保存界面中所需的所有变量和事件处理函数
//3.1 先创建一个data:{}来保存界面中所需的所有变量和初始值
data: {
n: 0
},
//3.2 创建一个methods:{}来保存界面中所需的所有事件处理函数
methods: {
add() {
this.n++;
},
minus() {
if (this.n > 0) {
this.n--;
}
}
}
})
```
二、MVVM
以往 的前端代码往往分为三个部分:
- HTML(专门定义网页的内容和结构)
- CSS(专门为网页添加样式)
- js(专门操作网页中的内容,为页面添加交互行为)
但是 HTML 和 CSS 功能太弱,即使很小的修改,都要通过 JS 来操作,导致 js 中存在大量重复和冗余的工作。所以为了解决此问题,就需要用到 MVVM 设计模式。
1. MVVM设计模式
MVVM 设计模式是对前端三大代码的重新划分,包括三部分;
(1)界面(View):包含以前的 HTML+CSS,让 HTML 也支持变量、判断、循环;
(2)模型对象(Model):专门保存页面中所需的变量和函数的特殊对象,
data:{ } 专门保存界面中所需的所有变量
methods:{ } 专门保存界面中所需的所有函数
(3)视图模型(ViewModel):专门负责将模型对象中的变量和函数,自动运送到界面中指定位置的特殊对象,自动将程序中的变量和函数运送到界面中所需的位置。并且还能自动保持界面显示与程序中的数据同步。
2. vue的绑定原理(vue框架如何实现 MVVM 设计模式)
(1)访问器属性
a. new Vue() 将 data:{ } 引入到 new Vue() 中时,先将 data 对象及其内部的内容全部隐藏;
b. new Vue() 自动为data中每个变量创建访问器属性,监视对每个变量的修改操作,访问器属性不再隶属于data对象,而是直接隶属于new Vue();
c. 只要在程序中修改变量,都会自动调用访问器属性的set()函数;
d. set() 函数中提前安插了一个通知函数(),可通知外部哪个变量值发生了变化;
e. methods 中所有的函数,进入 new Vue() 后,methods 对象就被打散,原 methods 中所有函数直接隶属于 new Vue() 对象;
f. methods 中的函数和 data 中的变量,最终会平级保存,都直接隶属于new Vue(),methods 中的函数,想操作 data 中的变量,必须加 this.。
(2)虚拟 DOM 树
是专门保存界面中所有可能发生变化的元素的简化版 DOM 树;在创建完 data 和 methods 之后,根据 el 属性值的选择器所指的元素,去扫描界面中指定区域的元素,一边扫描真实 DOM 树,一边创建虚拟 DOM 树,只保存可能发生变化的元素。
a. 只要在程序中修改了变量值,就会自动触发访问器属性的 set(),自动执行 set() 中的通知函数,通知函数()通知虚拟 DOM 树哪个变量发生了变化;
b. 虚拟 DOM 树扫描自己内部保存的所有可能发生变化的元素,只找出受本次变量修改影响的元素;
c.可以用提前封装好的 DOM 操作,将变量的新值,自动修改回页面中显示。
小结(高频笔试面试):
· vue绑定原理:访问器属性、虚拟DOM树;
· 虚拟DOM树四大优点:
(1)内容少体积小:只保存可能变化的个别元素;
(2)遍历查找快:保存的元素少,所以每次遍历查找受影响的元素时比遍历原始DOM树快;
(3)修改效率高:每次只修改受影响的个别元素,不受影响的元素是不改变;
(4)避免重复编码:提前封装了DOM的增删改查+事件绑定操作。
三、绑定语法
绑定语法是 在界面中标记可能发生变化的元素内容的特殊语法,只要发现一个元素的内容可能随程序自动改变时,都要用绑定语法来标记。
<元素>xxxx{{自定义变量名}}xxx</元素>
{{ }} 的原理和模板字符串中的 ${ } 完全一样,可以放一切有返回值的合法的 js 变量或表达式如变量、三目、算术计算、访问数组元素、创建对象、调用函数;不能放分支、循环以及没有返回值的js表达式。
举例:使用{{}}显示隐藏不同数据;
<body>
<div id="app">
<h3>Welcome:{{uname}}</h3>
<h3>性别:{{sex == 1?"男":"女"}}</h3>
<h3>小计:¥{{price*count.toFixed(2)}}</h3>
<h3>下单时间:{{new Date(orderTime).toLocaleString()}}</h3>
<h3>星期{{arr[day]}}</h3>
</div>
<script>
new Vue({
el: "#app",
data: {
//假设从服务器端请求回来个别数据,显示到页面上
uname: "王麻子",
sex: 1,
price: 12.5,
count: 5,
orderTime: 1614158191101,
arr: ["日", "一", "二", "三", "四", "五", "六"],
day: new Date().getDay()
}
})
</script>
</body>
效果如下:
四、指令
专门给 HTML 元素添加新功能的特殊 HTML 属性就是指令,含13种。
1. v-bind
如果元素的属性值可能随程序自动变化,则不能用 {{ }} 绑定,要用v-bind指令代替 {{ }} 绑定属性值。格式如下:
<元素 v-bind:属性名="js变量或表达式">
//简写
<元素 :属性名="js变量或表达式">
//注意:
//加了: 之后就不需要{{}}了
//=右边的""就起到了{{}}的作用
原理:new Vue()在扫描页面时,只要发现 : 开头的属性,都会先自动计算=右边的js变量或表达式的值,然后将变量或表达式的值作为当前属性的属性值;
举例:根据pm2.5数值,显示不同表情;
<body>
<div id="app">
<!--
如果pm25<100,显示img/1.png
如果pm25<200,显示img/2.png
如果pm25<300,显示img/3.png
否则显示img/4.png
-->
<img :src="
pm25<100 ? 'img/1.png':
pm25<200 ? 'img/2.png':
pm25<300 ? 'img/3.png':
'img/4.png'
">
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
//程序中只保存pm2.5的数值,不保存图片路径
pm25: 200
}
})
</script>
</body>
效果如下:
2. v-show
专门控制一个元素显示隐藏的特殊指令,用程序控制一个元素的显示或隐藏时,都用v-show。
<元素 v-show="true/false">
原理:只要 new Vue() 扫描到 v-show,就会先计算=右边的判断条件的值,如果=右边的判断条件值为 true,则当前元素默认正常显示,如果=右边的判断条件值为 false,则 v-show 自动被翻译为style=“display:none”,表示当前元素隐藏。
举例:打开和关闭对话框;
<body>
<!--VUE 3步
1. 做界面:
1.1 唯一父元素
1.2 找可能发生变化的元素
本例中:id="pop"的div显示和隐藏状态来回切换。所以应该用v-show
1.3 找触发事件的元素
本例中: 两个触发事件按钮和超链接a
-->
<div id="app">
<button @click="show">click me</button>
<div v-show="visible" id="pop">
<a @click="hide" href="javascript:;">×</a>
</div>
</div>
<script>
//2. 创建new Vue()对象,监控id为app的区域
new Vue({
el: "#app",
//3. 创建模型对象:
//3.1 创建data对象
// 本例中visible变量,控制对话框是否出现
data: {
visible: false //初始默认隐藏
},
//3.2 创建methods对象
methods: {
show() {
this.visible = true //点击按钮时显示对话框
},
hide() {
this.visible = false //点击×隐藏对话框
}
}
})
</script>
</body>
效果如下:对话框点击按钮显示,点击×隐藏。
3. v-if, v-else
专门控制两个元素二选一显示,当要在两个元素之间选择一个时,就用 v-if 和 v-else。
<元素1 v-if="条件1">
<元素2 v-else>
//注意:
//else后无序再写等于
//元素1和2之间不能再有其他元素
原理:当 new Vue() 扫描到 v-if 时,先计算=右边条件变量或表达式的值,如果 v-if 等号右边的条件为 true,则 new Vue() 会保留 v-if 所在元素,删除 v-else 所在元素;如果 v-if 等号右边的条件为false,则 new Vue() 会先删除v-if 所在的元素,保留 v-else 所在的元素。
举例:切换用户登录状态;
<body>
<!--VUE 3步
1. 做界面
1.1 唯一父元素包裹
1.2 找可能发生变化的元素
本例中:两个div之间二选一显示一个,所以用v-if和v-else
1.3 找触发事件的元素
本例中: 触发事件的元素为注销和登录两个超链接
-->
<div id="app">
<!--已登录时显示-->
<div @click="logout" v-if="a">
<h3>Welcome dingding <a href="javascript:;">注销</a></h3>
</div>
<!--未登录时显示-->
<div v-else>
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/279def68c404f69b891c37ef75900ab3.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
logout" v-if="a">
<h3>Welcome dingding <a href="javascript:;">注销</a></h3>
</div>
<!--未登录时显示-->
<div v-else>
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
[外链图片转存中...(img-ra98A5v4-1713331817716)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**