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 3data:{ histyObj:{color:'red','font-size':'40px','font-weight':200' }在元素中,通过属性绑定的形式,将样式对象应用到元素中:
<h1 :style="histyObj">这是一个h1</h1>
3.在
:style中通过数组,引用多个data上的样式对象在data上定义样式:
1 2 3data:{ 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实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

- 创建期间的生命周期函数:
| |