Vue.js 前端开发 快速入门与专业应用.docx
《Vue.js 前端开发 快速入门与专业应用.docx》由会员分享,可在线阅读,更多相关《Vue.js 前端开发 快速入门与专业应用.docx(173页珍藏版)》请在三一办公上搜索。
1、Vuejs前端开发快速入门与专业应用1 .第1章VUeV简介2 .第2章基础特性3 .第3章指令4 .第4章过滤器5 .第5章过渡6 .第6章组件7 .第7章VUev常用插件8 .第8章VUeV工程实例9 .第9章状态管理:VUeX10 .第10章跨平台开发:WeeX11 .第11章Vue.is2.0新特性第1章Vlejs简介近几年,互联网前端行业发展得依旧迅猛,涌现出了很多优秀的框架,同时这些框架也正在逐渐改变我们传统的前端开发方式。GOOgle的AngUIarJS、FaceboolReactJS,这些前端MVC(MVVM)框架的出现和组件化开发的普及和规范化,既改变了原有的开发思维和方式,
2、也使得前端开发者加快脚步,更新自己的知识结构。2014年2月,原GoOgIe员工尤雨溪公开发布了自己的前端库Vuejs,时至今日,VUe.js在GitHUb上己经收获超过30000star,而且也有越来越多的开发者在实际的生产环境中运用它。本书主要以VueJs1.0.26版本为基准进行说明,VueJs2.0版本与之不同的地方,会在对应章节中说明。1.1 Vuejs是什么单独来讲,VueJs被定义成一个用来开发Web界面的前端库,是个非常轻量级的工具。VueJs本身具有响应式编程和组件化的特点。所谓响应式编程,即为保持状态和视图的同步,这个在大多数前端MV*(MVCMVVM/MVW)框架,不管是
3、早期的backbone还是现在AngUIarJS都对这一特性进行了实现(也称之为数据绑定),但这几者的实现方式和使用方式都不相同。相比而言,VUeJS使用起来更为简单,也无需引入太多的新概念,声明实例newVue(data:data)后自然对data里面的数据进行了视图上的绑定。修改data的数据,视图中对应数据也会随之更改。VueJ那J组件化理念和ReaCtJS异曲同工一一切都是组件”,可以将任意封装好的代码注册成标签,例如:VUe.ComponentCexample:Example),可以在模板中以VeXamPle/example的形式调用。如果组件抽象得合理,这在很大程度上能减少重复开发
4、,而且配合VueJs的周边工具VUe-Ioader,我们可以将一个组件的CSS、HTML和js都写在一个文件里,做到模块化的开发。除此之外,VueJs也可以和一些周边工具配合起来,例如VUeToUter和VUe-resource,支持了路由和异步请求,这样就满足了开发单页面应用的基本条件。1.2 为什么要用VlIeJS相比较AngUlaijS和ReaCtJS,VueJs一直以轻量级,易上手被称道。MVVM的开发模式也使前端从原先的DOM操作中解放出来,我们不再需要在维护视图和数据的统一上花大量的时间,只需要关注于data的变化,代码变得更加容易维护。虽然社区和插件并没有一些老牌的开源项目那么丰
5、富,但满足日常的开发是没有问题的。VueJs2.0也已经发布了bea版本,渲染层基于一个轻量级的VimIaI-DOM实现,在大多数场景下初始化渲染速度和内存消耗都提升了24倍。而阿里也开源了WeeX(可以理解成ReaCtJS-NatiVe和ReaCJS的关系),这也意味着VueJs在移动端有了更多的可能性。不过,对于为什么要选择使用一个框架,都需要建立在一定的项目基础上。如果脱离实际项目情况我们来谈某个框架的优劣,以及是否采用这种框架,我觉得是不够严谨的。作为新兴的前端框架,VUeJS也抛弃了对1E8的支持,在移动端支持到AndrOid4.2+和iOS7+o所以如果你在一家比较传统,还需要支持
6、IE6的公司的话,你或许就可以考虑其他的解决方案了(或者说服你的老板)。另外,在传统的前后端混合(通过后端模板引擎渲染)的项目中,VueJs也会受到一定的限制,VUe实例只能和后端模板文件混合在一起,获取的数据也需要依赖于后端的渲染,这在处理一些JSoN对象和数组的时候会有些麻烦。理想状态下,我们能直接在前后端分离的新项目中使用VueJs最合适。这能最大程度上发挥VueJs的优势和特性,熟悉后能极大的提升我们的开发效率以及代码的复用率。尤其是移动浏览器上,VueJs压缩后只有18KB,而且没有其他的依赖。1.3 Vuejs的HeHOworld现在来看一下我们第一个Vue.js项目,按照传统,我
7、们来写一个HelIoWOrk1。首先,引入VueJs的方式有很多,你可以采用直接使用CDN,例如:scriptsrc=,http:/cdnjS也可以通过NPM进行安装:npminstallvue/最新稳定版本正确引入VueJs之后,我们在HTML文件中的内容为:message)应用的js如下:varvm=newVue(el:#app,data:message:,Helloworld,IamVue.js);输出结果为:Helloworld,IamVue.js这种形式类似于前端模板引擎,我们把js中message值替换了HTML模板中message这部分。不过,如果仅仅是这样的例子,我相信你也不会
8、有什么兴趣去使用VUe.js。根据上文对VueJs的说明,我们继续写两个有关于它特性的例子。第一个特性是数据绑定,我们可以在运行上述例子的浏览器控制台(console)环境中输入Vm.message=HelloVuejs,输出结果就变为了HelloVuejs0也就说明Vm.message和视图中的message是绑定的,我们无需手动去获取vhl标签来修改里面的innerHTML。同样,我们也可以绑定用户输入的数据,视图会随着用户的输入而变化,例如:Yourinputismessageinputtype=,text,/V-InodeI=message”)YourinputisHello,Worl
9、dHolo.Wortdlvm.message的值会随着用户在input中输入的值的变化而变化,而无需我们手动去获取DoM元素的值再同步到js中。第二个特性是组件化,简单来说我们可以自己定义HTML标签,并在模板中使用它,例如:-sagecontent=,HelloWorldvarMessage=Vue.extend(props:,content,template:,content,)Vponent(,message,Message);varvm=newVue(el:,#app*,!);我们在浏览器里最终看到的HTML结果为:rHelloWorld可以看到自定义的标签VmeSSage被替换成了H
10、elloWoid,当然,实际中的组件化远比示例复杂,我们会给组件添加参数及方法,使之能更好地被复用。如果说这几个例子引起了你对VueJs的兴趣的话,那接下来我们就会详细地说明它的基础用法和应用场景,以及最终我们如何将它真实地运用到生产环境中。第2章基础特性其实,无论前端框架如何变化,它需要处理的事情依旧是模板渲染、事件绑定、处理用户交互(输入信息或鼠标操作),只不过提供了不同的写法和理念。VueJs则会通过声明一个实例newVue()标记当前页面的HTML结构、数据的展示及相关事件的绑定。本章主要介绍VueJs的构造函数的选项对象及用法,以及如何通过VueJs来实现上述的常规前端功能。2.1实
11、例及选项从以前的例子可以看出,VueJs的使用都是通过构造函数Vue(option)创建一个VUe的实例:varvm=newVue()0一个VUe实例相当于一个MVVM模式中的VieWMode1,如图2-1所示。视图(VieW)数据绑定业务逻辑和数据展示和展示逻辑图21在实例化的时候,我们可以传入一个选项对象,包含数据、模板、挂载元素、方法、生命周期钩子等选项。下面就对一些常用的选项对象属性进行具体的说明。2.1.1模板选项中主要影响模板或DOM的选项有el和template,属性replace和template需要一起使用。el:类型为字符串,DOM元素或函数。其作用是为实例提供挂载元素。一
12、般来说我们会使用CSS选择符,或者原生的DoM元素。例如el:痴pp在初始项中指定了el,实例将立即进入编译过程。template:类型为字符串。默认会将template值替换挂载元素(即el值对应的元素),并合并挂载元素和模板根节点的属性(如果属性具有唯一性,举似id,则以模板根节点为准)。如果replace为false,模板IemPlate的值将插入挂载元素内。通过IemPlate插入模板的时候,挂载元素的内容都将被互联,除非使用SlOt进行分发(有关SIOt内容将在第6章组件中介绍)。在使用template时,我们往往不会把所有的HTML字符串直接写在js里面,这样影响可读性而且也不利于
13、维护。所以经常用#中1的方式赋值,并且在body内容添加scriptid=tptype=x-template”为标签包含的HTML内容,这样就能将HTML从js中分离开来,示例如下:123ThisisatplfromscripttagvarVm=newVue(el:,#app,template:,#tpl,);最终输出HTML结构为:cl*5-tplidappP-ThieUatplfreeXrSttp-duVue.js2.0中废除了replace这个参数,并且强制要求每一个VueJs实例需要有一个根元素,即不允许组件模板为:这样的兄弟节点为根节点的模板形式,需要改写成:2.1.2 数据Vue.
14、js实例中可以通过data属性定义数据,这些数据可以在实例对应的模板中进行绑定并使用。需要注意的是,如果传入data的是一个对象,VUe实例会代理起data对象里的所有属性,而不会对传入的对象进行深拷贝。另外,我们也可以引用VUe实例Vm中的$data来获取声明的数据,例如:vardata=a:1varvm=newVue(data:data)vm.$data=data/-truevm.a=data.a/-true/设置属性也会影响到原始数据vm.a=2data.a/-2/反之亦然data.a=3vm.a/-3然后在模板中使用a就会输出vm.a的值,并且修改vm.a的值,模板中的值会随之改变,我
15、们也会称这个数据为响应式(responsive)数据(具体的用法和特性会在第2.2节的数据绑定中说明)。需要注意的是,只有初始化时传入的对象才是响应式的,即在声明完实例后,再加上一句vm.Sdata.b=,2,并在模板中使用b,这时是不会输出字符串2的。例如:abvarvm=newVue(el:#app,data:(a:1!);vm.$data.b=2;如果需要在实例化之后加入响应式变量,需要调用实例方法$set,例如:vm.$set(,b,2);不过VueJs并不推荐这么做,这样会抛出一个异常:OUarMttU*nen-RAiMHth*H*0v*SrW.CMlrAVM.3.m3|6*tSlU
16、BZthereftywittM4t*aforaeerlablercIAvityandbtror*M.I所以,我们应尽量在初始化的时候,把所有的变量都设定好,如果没有值,也可以用UndefinedsEnull占位。另外,组件类型的实例可以通过PrOPS获取数据,同data一样,也需要在初始化时预设好。示例:varmyComponent=Vponent(my-component,props:,title,content,template:,title!)content)我们也可以在上述组件类型实例中同时使用data,但有两个地方需要注意:data的值必须是一个函数,并且返回值不是原始对象。如果传给
17、组件的data是一个原始对象的话,则在建立多个组件实例时它们就会共用这个data对象,修改其中一个组件实例的数据就会影响到其他组件实例的数据,这显然不是我们所期望的。data中的属性和ProPS中的不能重名。这两者均会抛出异常:O2TMa*MtftleXfuntMnthatrtwrmr3ty“IsIfiu.l,.26.ilt23。(VwtetafieldtltK*it*lrtdydefinedasa0rg.T0rwiofaultvaluefory.1AJtfiAlAJLlIU“,stMdefault-88*5;ifmM*Attopasp,gvUmtafttt*tatoflC4lltutth.e
18、*0,.XM.(fundin)f*I所以正确的使用方法如下:varMyComponent=Vponent(my-component,props:,title,content,data:function()returndesc:123template:,titlecontentdesc,2.1.3 方法我们可以通过选项属性methods对象来定义方法,并且使用V-On指令来监听DOM事件,例如:alertnewVue(el:app,data:a:1,methods:alert:function()alert(this.a);另外,Vue.js实例也支持自定义事件,可以在初始化时传入evems对象
19、,通过实例的$emit方法进行触发。这套通信机制常用在组件间相互通信的情况中,例如子组件冒泡触发父组件事件方法,或者父组件广播某个事件,子组件对其进行监听等。这里先简单说明下用法,详细的情况将会在第6章组件中进行说明。varvm=newVue(el:,#app,data:data,events:,event.alert,:function()(alert(,thisiseventalert:,+this.a);!);vm.$emit(,event.alert,);而VueJs2.0中废弃了events选项属性,不再支持事件广播这类特性,推荐直接使用VUe实例的全局方法$on()/$emit()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vue.js 前端开发 快速入门与专业应用 Vue js 前端 开发 快速 入门 专业 应用

链接地址:https://www.31ppt.com/p-6320673.html