终于算是顺利进入vue了,确实也只有学了过后才知道,之前三过vue而不学,确实是对的,现在进来了一点都不后悔,ajax、node.js、promise、webpack、git等等确实是除了三大基础外还需要额外学的。
终于能够一窥vue的真容了,学了这么久,说实话一直都忍着,不去触碰这一条线,就想留着保持浓厚的兴趣,来看看vue到底是个什么神奇的东西,能让代码如此简单,确实,至少到我现在学的阶段,其他大的感触没有,唯一的感触就是,很多功能的实现要简便的多了,那比原生js不是简单一星半点。
这中间笔记还丢过,感觉可能typora都要让我来学两编加深下记忆吧,总是有这个bug,明明占用的存储大小还在那里,打开就是一片空白,反正已经跟typora的制作团队联系过了,看能不能后续给解决掉这个bug。

这篇文章可谓是重量级,至少是我目前为止集格式、含金量、规模最大的!

一.Vue简介

1. Vue是什么

一套用于构建用户界面的渐进式(渐进式:自顶向下逐层的应用,由一个小巧的核心库,引入各式各样的vue插件)JavaScript框架。

2. 特点

二.搭建vue开发环境

1.安装

打开vue官网安装开发版本,引入vue.js后log会有两个提示:一个是叫你要下载开发者工具,一个是提醒你在上线后不要引入这个vuejs

image-20220430123659782

Vue代码提示插件:vue 3 Snippets

2.开发者工具

谷歌应用商店下载vue-devtools

image-20220430123906889

注意修改vue谷歌插件

image-20220430124240356

3.productionTip

也就是我们第二个提示,参照vue官网api

这个是我们vue的全局配置下的属性,也就是vue.config的属性字面意思就是生产环境提示,修改为false。

自此所有提示消除。

三.vue基础

1.hello小案例

进入这个案例前,先解决一个问题

image-20220430131532505

image-20220430131606145

首先要知道我们的vscode开启live server后,他是将整个vscode文件夹放在了这个服务器下面去了,所以他回去服务器的根目录上找这个小图标,在根目录添加一个这样的图标即可

怎么来使用vue,开端需要创建一个vue的对象实例,然后主要的是,实例里面要传入的参数:

el :‘’ el是固定写法,后面的值通常为css的选择器

data :{} data也是固定写法,后面暂时以对象进行书写,作用是向上面el也就是哪个容器传递参数

image-20220430134642351

总结:

1.1.注意事项

image-20220430140057768

2.模板语法

3.数据绑定

数据绑定分为两种:

注意:双向绑定一般只用在表单类元素上(input、单选、复选、文本域等)

4.el、data两种写法

首先要知道我们的vue实例对象上面有很多$开头的方法,这些方法都是给我们用的,但是非$开头的就是vue自己用的了我们用不了,el的第二种写法正是用到了实例对象的proto原型上的一个$mount的方法(理解性记忆,mount有挂载的意思,而我们vue本身就是把这个实例挂载到这个容器上),原来那种和这一种都可以,面对不同的情况有不同的用法

image-20220430152513379

data的简写方法就是值为一个函数,但是函数的返回值只能为一个对象

image-20220430152712237

缩写为

image-20220430153047596

注意:vue所管理的函数(比如data函数),不能写箭头函数,不然this乱了不再是vue对象实例了

5.MVVM模型

image-20220430153909361

首先是M可以看成我们的数据,V看成我们的模板,最后一个VM就是可以将我们的数据渲染到模板,将模板的value保存到数据,在中间起到一个转换的工作,这个就是VM,整个系统就为MVVM模型

image-20220430154938489

所以我们一般把对象实例取名为vm,中间的一个转换的过程,就需要我们去学习vue的各种语法了

总结:回顾一下我们前面所说的{{}}vue方法这里面都能写些什么的问题,前面是说的表达式吧,其实这里面能写的远不止于此,我们vm是一个实例对象,{{}}里面放的东西其实是我们vm实例对象里面的任何东西,包括我们数据里面写的name、age等都是因为他有所以我们才能用到。

image-20220430160226995

不仅如此,就连原型上的、非$开头的都可以拿到,而且不用带前缀,以为都是vm里面的,之所以要这么说,只是为了要记住,我们的模板里面的vue语法都是拿的vm实例里面的属性方法。

6.数据代理

image-20220430161420838

​ 枚举表示是否可以被遍历

​ 上面只是这个方法的普通用法,真正要用的是配置对象的两个方法

​ 如果我们是这样定义的:

image-20220430163822945

image-20220430163909096

可以看到值并不会被更改,为什么?因为我们都知道js代码的一个执行顺序加上我们时间循环的一个机制,当我们第一次定义玩number,同时跟着主栈道把data也一起定义完了,这个时候我再去修改number的值,那就只是修改number的值,并不会重新再执行一次data的重新赋值,他的修改也影响不了他。

所以这个时候在我们的defineProperty配置对象里面就出现了两种方法

get函数(getter)当有人一访问age这个值时就会立马去调用getter

set函数(setter)当有人一修改age这个值时我的value形参就会接收到这个值,从而可以拿来对我的里面的数据修改值

image-20220501102855319

7.事件处理

7.1 事件基本使用

事件的指令语法v-on:click(指令语法都是v-开头)

vm实例对象属性为methods 它是时间处理函数的属性名

image-20220501105202962

我们事件怎么来传参?前面说过指令语法会把字符串变为表达式,所以这里的字符串不再是看成字符串这么简单,是一个函数,是函数就可以给他实参

image-20220501105429268

事件要使用event这个内置对象的话,也需要传参进去$event

image-20220501105641208

注意:

7.2 事件修饰符

image-20220501112427047

就是无需通过e.~~来执行一些操作,直接可以在指令语法处使用,看以下案例注意这个事件修饰符是加在哪里得

(前三个熟记)(可以像链式编程一样连写)

7.3 键盘事件

image-20220501131219397

image-20220501132028982

注意用在哪里,怎么个用法

8. 计算属性

姓名案例:

输入姓,输入名,展示出来并且是动态展示。

image-20220501135752464

9.监视属性

监视是用来监测属性(一般属性、计算属性)是否发生变化

天气案例

首先如果事件的代码很简单一句话可以直接指令语法处

image-20220501174554731

image-20220501184309115