前端用php还是vue,我从未见过如此简洁易懂的Vue教程

这是一篇长文,按照我自己的逻辑重新整理一下,包含所有Vue的基础知识点。

但是我更建议你先简略的阅读官方的文档,因为本文具有一定的阅读门槛,同时我也竭尽所能把这门槛降到最低,同样你也可以把本文作为快速回忆教程。

发挥100%的专注力,调动体内所有的热情,你将做到很多令人惊叹的事情

67c694abc16267842edfe4b0120868a4.png

什么是MVVM ?

对比以前的mvc或者mvp,就是把C或者p替换成vm。

vm就是上图,请仔细看一些细节,vm监听DOM,当数据改变的时候,vm会去自动更新视图。

面向未来的组件系统

实现了一些未来的w3c规范(暂不赘述)

Web 组件规范

Slot API

根 vue 实例

8fa0ebbe9737c8f274f69d3e3304bda0.png

Hello Wrold 例子

7e7a27b9b6dbf5a43a4d0980c96df01c.png

361e602d1da99c8650a089e78d76f79f.png

组件 Component 构造器

vue.extend()返回的只是一个构造器,我们需要通过vue.extend()的返回值和new关键字创建实例。

当我们注册为组件的时候,内部就已经帮我们创建好了实例。

Tip: 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

08838cab1d34dfe1352a313531428f60.png

生命周期

922e1053a91df6d2324036c2920a44de.png

上图的就是ViewModel的生命周期,仔细的看其实并不难。目前先了解一下。

在传统软件工程中,特别是QT类桌面端软件,都有软件的生命周期,还有比如Android的生命周期,React的生命周期。

目前的前端趋势正在向此方面靠近。

流程大致像这样

be3f55b4073bc7e5d3921e7676b8b07f.png

绑定

简单的理解就是模板字符串功能,放心的在任何你想用的地方去用,假如错了vue会给你提示。

定界符都是可以修改的

29ef58cf121234d1fd1633be26467882.png

数据的绑定

dd6d6e5bcda391a460f91111274240a5.png

表达的绑定

不可使用,var/let关键字声明变量,也不能使用if/for流程控制。

df92346290b9eeccfb25f34831dc53c6.png

过滤器

对数据进行相应的处理,message为第一个参数、filter为要执行的函数。

eb496314813f4abacb0ef0766ce547ab.png

指令

当其表达式的值改变时把某些特殊的行为应用到 DOM 上。

7d1a7728108896284f311e2134c1f07b.png

v-bind 缩写

47625a154bde951666528efe62c13405.png

e317359d79611d30f436e243a44b1dcb.png

计算属性

d61fed3777d488abce4ca1ad89ca16ef.png

156b5c651b4c4155283627a0c29bcfec.png

给计算属性设置setter

31f4c6a672ba716918185176425972cc.png

$watch

通常更优的做法是使用computed计算属性

9957505a622b9f018f84496ebd5385d9.png

Class 与 Style 绑定

vue特意增强了他们,支持对象和数组绑定

Class 对象绑定

5cf402068116ff2da370c5731aba4dfe.png

Class 数组语法

584fef03d92012dbc5039a917ec71970.png

a61f45817ee5261803cad19d5c54a917.png

Style 对象语法

CSS 属性名可以用驼峰式(camelCase)或短横分隔命名(kebab-case),自动添加浏览器的前缀。

7c71dcf7e04fb5c04ed1c105fcd4af99.png

Style 数组语法

a7c816b3af4f478fabd6d35afee3c2db.png

条件渲染

** Tip: v-else 元素必须立即跟在 v-if 或 v-show 元素的后面——否则它不能被识别。**

v-if

0d436f18de4fb9d49e53958c3600d2c1.png

v-show

不支持 template 元素包裹

1cd7be39d6c46cb13741365e7626a13c.png

if 与 show 之间的战争

如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。

列表渲染

4ffe9212bfae2fc552131649d0c7b9a9.png

通过$index可以访问索引,且在v-for块内可以访问的到其他属性。

a89e11fcb0eb28da9323a4ee2760ae65.png

为索引设置一个别名,且 1.0.17+ 之后可以使用 for of

e60b2691fc076a959a0df57635432933.png

数组变动检测

以下是vue提供的一些数组上的方法,能触发视图更新。

push()

pop()

shift()

unshift()

splice()

sort()

reverse()

替换数组

当我们使用一些不改变数组本身的方法的时候(纯函数),我们可以直接赋值给自身,虽然替换了原始的数组,但是vue不会重新渲染所有,他会去进行对比。

track-by

通过此选项设置参考特征,用特征对比,一样就进行复用

6ece05e722bef90869cd241438f2764f.png

track-by="$index"

这样让数据替换高效,此时DOM节点不再映射数组顺序变化,不能同步临时状态。

v-for 包含 元素或者子组件,要小心使用

更新问题

vue不能检测下面数组的变化

直接用索引设置元素,如 vm.items[0] = {};

修改数据的长度,如 vm.items.length = 0。

3a9f943ad80daf92f094d4d61828f0dc.png

对象v-for

6d0afe27bb380a78a4621063622594b9.png

方法与事件处理

5a84706a91bc3b009f677058d8344dba.png

29f44aff2bcb4f54b71259f888429506.png

29dee69e07d6b06d7b0931bc30880e06.png

事件修饰符

在事件处理器中经常需要调用event.preventDefault 或 event.stopPropagation

e02df95c8898739b4f9921eb2f2c9c3b.png

按键修饰符

enter

tab

delete

esc

space

up

down

left

right

0a9711db1348034ebaa17a7767a475fe.png

自定义按键别名

cd4ee19be8fa6c5dce254b7440043d0f.png

转自https://www.jianshu.com/p/b544091c3d67#!/xh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值