Vue.js
概念
Vue.js
是目前最火的一个前端框架,React
是最流行的一个前端框架(React除了开发网站,还可以开发手机App
,Vue
语法也是可以用于进行手机App
开发的,需要借助于Weex
)Vue.js
是前端的主流框架之一,和Angularjs
、Reactjs
一起,并成为前端三大主流框架!·Vue.js
是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue
有配套的第三方类库,可以整合起来做大型项目的开发)
框架和库的区别
- 框架:是一套完整的解决方案;对项目的侵入性较大,项目如果需要更换框架,则需要重新架构整个项目。
- 库(插件):提供某一个小功能,对项目的侵入性较小,如果某个库无法完成某些需求,可以很容易切换到其它库实现需求。
后端中的MVC
与前端中的MVVM
之间的区别
MVC
是后端的分层开发概念;MVVM
是前端视图层的概念,主要关注于视图层分离,也就是说:MVVM
把前端的视图层,分为了三部分Model
,View
,VM
,ViewModel
vue.js
基本架构
|
|
基本事件语法
<!--1.如何定义一个基本的vue代码结构-->
<!--2.插值表达式和 v-text-->
<!--3.v-cloak-->
<!--4.v-html-->
<!--5.v-bind vue提供的属性绑定机制缩写是 : -->
<l--6.v-on vue提供的事件绑定机制缩写是 @ -->
|
|
Vue
指令之事件修饰符
事件修饰符
.sweight
阻止冒泡.prevent
阻止默认事件.capture
添加事件侦听器时使用事件捕获模式.self
只当事件在该元素本身(比如不是子元素)触发时触发回调.once
事件只触发一次
Vue
指令之v-model
和双向数据绑定
|
|
Vue
中使用样式
使用class样式
1.数组
<h1 :class="['red','thin']">这是一个H1</h1>
2.数组中使用三元表达
<h1 :class="['red','thin',is active?'active':'']">这是一个H1</h1>
3.数组中嵌套对象
<h1 :class="['red','thin', {'active':isactive}]">这是一个H1</h1>
4.直接使用对象
<h1 :class="{red:true, italic:true, active:true,thin:true}">这是一个H1</h1>
|
|
使用内联样式
1.直接在元素上通过
style
的形式,书写样式对象<h1 :style="{color:‘red','font-size':'40px'}">这是一个善良的H1</hl>
2.将样式对象,定义到
data
中,并直接引用到:style
中在data上定义样式:
1 2 3
data:{ histyObj:{color:'red','font-size':'40px','font-weight':200' }
在元素中,通过属性绑定的形式,将样式对象应用到元素中:
<h1 :style="histyObj">这是一个h1</h1>
3.在
:style
中通过数组,引用多个data
上的样式对象在data上定义样式:
1 2 3
data:{ histy0bj:{color:'red','font-size':‘40px',‘font-weight":'200'}, histy0bj2:{fontstyle:'italic'}
在元素中,通过属性绑定的形式,将样式对象应用到元素中:
<h1 :style="[histy0bj,histy0bj2]">这是一个h1</h1>
|
|
Vue
指令之v-for
和key
属性
- 1.迭代数组
|
|
- 2.迭代对象中的属性
|
|
3.迭代数字
<p v-for="ks in 8">这是第({i}}个P标签</p>
22.0+的版本里,当在细件中使用v-for时,key现在是必须的。
当
Vue.js
用v-for
正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue
将不是移动DOM
元素来匹配数据项的顺序,而是简单复用此处每个元素,并且确保它在特定素引下显示已被渲染过的每个元素。 为了给Vue
一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一key
属性。
|
|
Vue
指令之v-if
和v-show
- 一般来说,
v-if
有更高的切换消精而 v-show
有更高的初始渲染消耗。- 如果需要频繁切换
v-show
较好 - 如果元素可能永远也不会被显示出来被用户看到,则推荐使用
v-if
|
|
过滤器
- 概念:
Vue.js
允许你自定义过滤器,可被用作一些嚣见的文本格式化。 - 过滤器可以用在两个地方:
mustache
插值和v-bind
表达式。过滤器应该被添加在JavaScript
表达式的尾部,由“管道”符指示
全局过滤器
|
|
局部过滤器
|
|
ES6
中的字符串新方法String
,prototype
,padStart(maxlength,fillString='')
或String
,prototype
,padEnd(maxlength,filString='')
来填充字符串;
Vue指令
钩子函数
指令提供了几个钩子函数
bind
:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。inserted
:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document
中)。update
:所在组件的VNode
更新时调用,但是可能发生在其孩子的VNode
更新之前。指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新(详细的钩子函数参数见下)。componentUpdated
:所在组件的VNode
及其孩子的VNode
全部更新时调用。unbind
:只调用一次,指令与元素解绑时调用。 接下来我们来看一下钩子函数的参数(包括el,binding,vnode,oldVnode
)
钩子函数参数
指令钩子函数会被传入以下参数:
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
钩子中可用。
除了
el
之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的dataset
来进行。
Vue实例的生命周期
仕么是生命周期:从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期
生命周期钩子 = 生命周期函数 = 生命周期事件:就是生命周期事件的别名而已;
主要的生命周期函数分类:
- 创建期间的生命周期函数:
beforeCreate
:实例刚在内存中被创建出来,此时,还没有初始化好data
和methods
属性created
:实例已经在内存中创建OK,此时data
和methods
已经创建OK,此时还没有开始编译模板beforeMount
:此时已经完成了模板的编译,但是还没有挂载到页面中mounted
:此时,已经将编译好的模板,挂载到了页面指定的容器中显示
- 运行期间的生命周期函数:
beforeUpdate
:状态更新之前执行此函数,此时data中的状态值是最新的,但是界面上显示的数据还是旧的,因为此时还没有开始重新渲染DOM节点updated
:实例更新完毕之后调用此函数,此时data
中的状态值和界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!
- 销般期间的生命周期函数:
abeforeDestroy
:实例销毁之前调用。在这一步,实例仍然完全可用。destroyed
:Vue 实例销毁后调用。调用后,Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
- 创建期间的生命周期函数:
|
|