版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习目最初的网页以HM为主,是纯静态的网页。网页是只读的,信息流只能从服务端到客户端单向流通。。异步刷新,操作1995年,网景工程师BrendanEich花了10天时间设计了JavaScript语言随着JavaScipt的诞生,我们可以操作页面的DO元素及样式,页面有了一些动态的效果,但是依然是以静态为主。2005年开始,jax逐渐被前端开发人员所重视,因为不用刷新页面就可以更新页面的数据和渲染效果。此时的开发人员不仅仅要编写HTML样式,还要懂aja与后端交互,然后通过S操作Dm。比较流行的框架如jQury就是典型代表。2009年,RyanDahl在谷歌的ChromeV8引擎基础上,打造了基于循环的异步IO框架:Node.js。2010年,NPM作为o.j的包管理系统首次发布,开发人员可以遵循Cmo.js规范来编写N.js后发布到NPM上供其他开发人员使用。目前已经是世界最大的包模块管理系统。MVVM模在VVM之前,开发人员从后端获取需要的数据模型,然后要通过DO操作Modl渲染到Viw中。而后当用户操作视图,我们还需要通过DO获取Viw中的数据,然后同步到Modl中。而VVM中的V要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Modl和Viw之间是如何互相影响的:当用户修改了View,Model中的数据也会跟着改变认识Ve(读音j/,类似于iw)是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue自底向上逐层应用。Ve的库只关注视图层,不仅易于上手,还便于与第库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。用了这些组件也不要求你的系统全部都使用该框架。 ,Vue.js创作者,VueTechnology创始人,致力于Vue快速安装安 可以2.6.10版 /vuejs/vue/archive/v2.6.10.zip或资料文件夹中也已解压, 可得到vue.js文件使用<!-<!--开发环境版本,包含了用帮 令行警告--或者<!--<!--生产环境版本,优化了尺寸和速度npm安装(推荐先输对项目进行初始此时,会在项 这是对项目的基本描述信息。例如名称、版本等,有点类似av中的pmVu,输入命令:##save的意思是将模块安装到项 下,并在package文件的dependencies节点写入依然后就会在项 发现一个 ,并且在下面有一个 od_modes是通过pm安装的所有模块的默认位置。此时再查看pckagson,会发现有了变化:HTML模01-在项 01-vue渲01-demo.html<meta<metacharset="UTF-<title>vuejs测试<h2>{{name}}非常酷el:"#app",//el即element,要渲染的页面元"首先通过newVue()来创建Vue然后构造函数接收一个对象,对象中有一些页面中的h2元素中,通过{{name}}的方式,来渲染刚刚定义的name打开页面查看效双向绑elel:"#app",//el即element,要渲染的页面元 {{name}}有{{num}}个酷炫学科<metacharset="UTF-<title>vuejs测试}}num:在页面中有一个input元素,通过v-modelnum进行绑定。同时通过{{num}}在页面输出效果input与num绑定,input的value值变化,影响到了data中的num页面{{num}}与数据num绑定,因此num值变化,引起了页面效果变化处在页面添加一个按钮<input<inputtype="text"v-model="num"><buttonv-on:click="num++">点我{{name}}非常酷有{{num}}个酷炫学科<metacharset="UTF-<title>vuejs测试varapp=newdata:{num:}这里用v-on指令绑定点击,而不是普通的onclick,然后直接操作num效果每个Vue应用都是通过 函数创建一个新的Vue实例开始的接下来一一介绍。每个Vu实例都需要关联一段Html模板,Vu会基于此模板进行视图渲染;可以通过lhtml模板:然后创建Vue实例,关联这个
的<button<buttonv-on:click="add">点我consoleconsole.log("点我了生命周每个Vue实例在被创建时都要经过一系列的初始化过程:创建实例,装载模板,渲染模板等。Vue为生命周期中的 着你不能使用箭头函数来定义一个生命周期方法(例如created:()=>this.fetchTodos())。这是因为箭生命周期
与你期待的Vue
的行为未定义vm.$el:Vue实例使用的根DOM元vm.$root:当前组件树的根Vue实例。如果当前实例没有父实例,此实例将会是其钩子函创建示例html页面02-lifecycle.html<!DOCTYPE<!DOCTYPE<html<metacharset="UTF-<title>vuejs测试<script<divletapp=Vue({,//this.msg= ovue.}123456789结果////控制台的输出总结
才能到Vue中定义的data内属性、方法等指指令(Directives)是带 花括格式说明表达式必须有返回结果。例如1+1,没有结果的表达式不允许使用,如:vara=1+示例<meta<metacharset="UTF-<title>vuejs测试插值闪使用{{}}方式在网速较慢时会出现问题。在数据未加载完成时,页面会显示出原始的,加载完毕后才显示正确数v-text和v-使用v-text和v-html指令来替代说明示例改造原页面内容为<meta<metacharset="UTF-<title>vuejs测试v-text:<spanv-v-html:<spanv-效果v-刚才的tt和vhml可以看做是单向绑定,数据影响了视图渲染,但是反过来就不行。接下来学习的vmodl向绑定,视图(Viw)和模型(Modl)之间会互相影响。<meta<metacharset="UTF-<title>vuejs测试letapp=Vue({,}多 checkbox对应一个model时,model的类型是一个数组,单个checkbox值是boolean类radio对应的值是input的value 默认对应的model是字符单选对应字符串,多选对应也是效果资料\chromevue插件\安装说要使用上图资料\chromevue插件\安装说v-基本用
简写语法v-例 可以简v-示例<meta<metacharset="UTF-<title>vuejs测试<!--直接写js片段<button@click="num++">增加<!--使用函数名,该函数必须要在vue实例中定义<button@click="decrement">减少this.num--效果修饰在处理程序中调用 可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理DOM细节v-为了解决这个问题,Vue.jsv-:冒
示例
:默认发:使用捕获模:只执行""@click.prevent="print('点击 ')">传智播客 默 <a<button@click.stop="print('点击了button')">点我试试<button@click="num++">增加<button@click="decrement">减少<metacharset="UTF-<title>vuejs测试letapp=Vue({,this.num--}}v-遍历数语法示例<li<liv-for="userinusers">{{}}--{{user.age}}--<metacharset="UTF-<title>vuejs测试el:"#app",//el即element,要渲染的页面元data:{"name":"","age":8,"gender":"男{"name":"传智播客","age":12,"gender":"女{"name":"酷丁鱼","age":4,"gender":"男]}效果数组角items:要迭代的数item:迭代得到的数组元素别示{{index}}--{{}}--{{user.age}}--{{index}}--{{}}--{{user.age}}--效果遍历对v-for="(value,key,index)v-for="(value,key,index)in3个参数时,第三个是索引,从0开示例 ","age":8,"gender":"男el:"#app",//el即element,要渲染的页面元{{index}}--{{key}}--{{index}}--{{}}--{{user.age}}--<metacharset="UTF-<title>vuejs测试{"name":"传智播客","age":12,"gender":"女{"name":"酷丁鱼","age":4,"gender":"男:{"name":"传智汇","age":3,"address":"中国}效果v-当Vue.js v-不会移动DOM元素来匹配数据项的顺序,而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过如果使用y这个功能可以有效的提高渲染的效率;y一般使用在遍历完后,又增、减集合元素的时候更有意义。但是要实现这个功能,你需要给Ve一些提示,以便它能每个节点的,从而重用和重新排序现有元素,你需要为每项提供一个唯示例
值是每项都有的且唯一的id。也就是key是该项的唯一标识这里使用了一个特殊语法 后面会讲到,它可以让你vue中的属性,并赋值给key属基本使vi,顾名思义,条件判断。当得到结果为true时,所在的元素才会被渲染。语法:示例<meta<metacharset="UTF-<title>vuejs测试el:"#app",//el即element,要渲染的页面元效果与v-for结当if和-for出现在一起时,-for优先级更高。也就是说,会先遍历,再判断条件。示例:<meta<metacharset="UTF-<title>vuejs测试<liv-for="(user,index)inusers"v-if="user.gender=='女{{index}}--{{}}--{{user.age}}--el:"#app",//el即element,要渲染的页面元 ","age":8,"gender":"男{"name":"传智播客","age":12,"gender":"女{"name":"酷丁鱼","age":4,"gender":"男{"name":"传智大学","age":2,"gender":"女效果v-v-v-可以使 指令来表 的“elsev-v- ","age":8,"gender":"男{"name":"传智播客","age":12,"gender":"女{"name":"酷丁鱼","age":4,"gender":"男el:"#app",//el即element{{index}}--{{}}--{{user.age}}--{{index}}--{{}}--{{user.age}}--<metacharset="UTF-<title>vuejs测试{"name":"传智大学","age":2,"gender":"女]}v-v-else-v-元素必须紧跟在 或 的元v-v-else-v-v-else-v-,顾名思义,充 的“else-if块”v-else-v-v-v-else-类似于v-else,v-else-if也必须紧跟v-v-else-v-
的元后v-另一个用于根据条件展示元素的选项 指令。用法大致一v-v- 的元素始终会被渲染并保留在DOM中。v-show只是简单地切换元素的CSS属性v- <!DOCTYPE<html<metacharset="UTF-<title>vuejs测试<div<button@click="show=!show">点我<h2v-o <ulv- color:deeppink">{{index}}--{{}}--{{user.age}}-- <liv-elsestyle="background-color:{{index}}--{{}}--{{user.age}}-- <h2v-你好 <scriptvarapp=newel:"#app",//el即element,要渲染的页面元data: ","age":8,"gender":"男 {"name":"传智播客","age":12,"gender":"女 {"name":"酷丁鱼","age":4,"gender":"男 {"name":"传智大学","age":2,"gender":"女 41代码v-属性上使用vue数看这样一个案例<meta<metacharset="UTF-<title>vuejs<title>vuejs测试<styletype="text/css">div{width:100px;color:white;}.redbackground-color:}.bluebackground-color:}<div<button@click="color='red'">红色<button@click="color='blue'">蓝色<div<scriptvarapp=Vue({,data:}56789解读页面有两个按钮,点击时,会改变Vu实例中的color值,这个值与前面定义的CSS目前i的cls为空,希望实现点击按钮后,i的cls样式会在.e和.lu之间切换大家可能会这么想,既然clor值会动态变化为不同的clss名称,那么我们直接把clor注入到cls不过,v-bind太麻烦,因此可以省略,直接写成::属性名='属性值',即效果class上面虽然实现了颜色切换,但是语法却比较可以传 一个对象,以动态地切换对象中,key是已经定义的class样式的名称,如本例中的:red<meta<metacharset="UTF-<title>vuejs测试9
color:white;.redbackground-color: .bluebackground-color: <div<button@click="color='red'">红色<button@click="color='blue'">蓝色<div点击按钮改<button@click="bool=!bool">点我改变下面色块颜色<div点击按钮改<scriptvarapp=Vue({,data:bool: 42{red:bool,blue:首先class绑定的是一个{red:bool,blue:ed和lu两个样式的值分别是bol和!bol,也就是说这两个样式的生效标记恰好相反,一个生效,另一个失效。bool默认为true,也就是说默认red生效,blue效果但是如果表达式的内容很长,就会显得不够优雅,而且后期起来也不方便,例如下面的场景,有一个日期的数据,但是是毫秒值:birthdaybirthday:1429032123201//<meta<metacharset="UTF-<title>vuejs测试你的生日为:你的生日为:{{newDate(birthday).getFullYear()}}-{{newDate(birthday).getMonth()+1}}-{{new<scriptvarapp=newdata:{}虽然能得到结果,但是非常麻烦elel:"#app",//el即element,要渲染的页面元computed计算方式;你的生日为Date(birthday).getMonth()+1}}-{{new<metacharset="UTF-<title>vuejs测试效果ooel:"#app",//el即element,要渲染的页面元<metacharset="UTF-<title>vuejs测试message(newValue,console.log("新值:"+newValue+";旧值:"+}}效果深<meta<metacharset="UTF-<title>vuejs测试}}}//的处理方console.log("name="++",age="+}//deep:<scriptvarapp=newdata:{ o ",message(newValue,console.log("新值:"+newValue+";旧值:"+: 为为.age"><button<inputv-变化以前定义时,是一个函数,现在改成了对象,并且要指定两个属性 handler:就是以前的处理函效果组件导航。页面就可以共享这些组件,避免重复开发。通 <meta<metacharset="UTF-<title>vuejs测试<div<div<script//constcounter=temte:"<button@click='num++'>你点击了{{num}}次;我记住了</button>",return{num:}//全局组件;参数1:组件名称,参数2:组ponent("counter",varapp=Vue({89组件其实也是一个Vu实例,因此它在定义时也会接收:dt、methodsl属性。但是组件渲染需要html模板,所以增加了temte属性,值就是HTML模效果<!--<!--使用定义好的全局组件效果当定义这 组件时,它的data并不是像这样直接提供一个对象取而代之的是,一个组件的data选项必须是一个函数,因此每个实例可以一份被返回对象的独立的拷贝如果Vue没有这条规则,点击一个按钮就会影响到其它所有实一旦全局,就意味着即便以后你不再使用这个组件,它依然会随着Vue的载而载因此,对于一些并不频繁使用的组件,会采用局部。////定义组 te:"<button@click='num++'>你点击了{{num}}次;我记住了<!--使用定义好的全局组件<metacharset="UTF-<title>vuejs测试////全 组件;参数1:组件名称,参数2:组ponent("counter",varapp=Vue({,//局部组counter:}父向子传递比一个子组件////直接使用propsprops:[title]//通过props这个子组件中要使用ile属性渲染页面,但是自己并没有ile通过ps来接收父组件属性,名为ile<meta<metacharset="UTF-<title>vuejs测试<!--使用定义好的全局组件//定义组te://定义接收来自父组//全 组件;参数1:组件名称,参数2:组msg:"父组件中的msg属性的内容效果传递复杂数定义一个子组件propsprops:{//通过props来接收父组件传递来的items:{这里定义itemstype:Array,//要求必须是Arraydefault:[]//如果父组件没有传,那么给定默认值是这个子组件可以对items进行迭代,并输出到页面。type:限定父组件传递来的必须是数组,否则报错;type的值可以是Ay或者Ojct()default:默认值return{"xxx":"默认值}页面内容<metacharset="UTF-<title>vuejs测试<h2>传智播客开设的课程 <!--接受来自父组件的属性值,使用v-bind指向父组件的属性lessons;注意使用my-list--> <my-list:items="lessons"></my- //定义组 //可以 引号、单引号或者如下使用的`飘 <liv-for="iteminitems":key="item.id">{{item.id}}--{{}}</li> //定义接收来自父组件的属 //定义模版中使用的 //必须为数组类 //默认为空数 msg:"父组件中的msg属性的内容{"id":1,{"id":2,{"id":3,"name":"前端]//组components://如果组件key和value一致可以}效果5.5.3子向父的通来看这样的一个案例<!--<!--使用定义好的全局组件<metacharset="UTF-<title>vuejs测试////constcounter= te:`<button<button@click="snum--">-//全局组件;参数1:组件名称,参数2:组ponent("counter",varapp=Vue({,}varvarapp=Vue({,this.num--}}123456789<!--<!--使用定义好的全局组件<counter@plus="numPlus"@reduce="numReduce"////定义组//组件只能是一个元素里面包裹其他元素;如下面,一个div包含两个按<button@click="decrNum">-//点击模板中使用的方完成页面如下<!DOCTYPE<html<metacharset="UTF-<title>vuejs测试<div<h2>num=<!--使用定义好的全局组件<counter@plus="numPlus"@reduce="numReduce"<script//定义组constcounter=//组件只能是一个元素里面包裹其他元素;如下面,一个div包含两个按 te:<button<button@click="decrNum">- methods://点击模板中使用的return return //全 组件;参数1:组件名称,参数2:组ponent("counter",varapp=new //父组件中定义操作num的方 this.num-- }}v提供了一个内置的this.$emit函数,用来调用父组件绑定的函数效果:Vuejs vue-vue-resource是Vue.js的插件提供了使用XMLHttpRequest或JSONP进行Web请求和处理响应的服务。当vue更新vue-resource的地址 /pagekit/vue-Axios是一个基于promise的HTTP库,可以用在浏览器和node.jsaxios 地址 ##如果使用npm则可以如下安<!-<!--开发环境版本,包含了用帮 令行警告--方法说axios.get(url[,config])axios.delete(url[,config])axios.head(url[,config])axios.post(url[,data[,config]])axios.put(url[,data[,config]])axios.patch(url[,data[,config]])config这些是创建请求时可以用的
,请求将默认使 方法////`headers`'X-Requested-With'://`transformRequest`baseURL://`method`
'Content-Type'://`params`是即将与请求一起发送的URL//必须是一个无格式对象 inobject)或URLSearchParams对{ //`data`是作为请求主体被发//只适用于这些请求方法'PUT','POST',和//在没有设置`transformRequest`时,必//- inobject,ArrayBuffer,ArrayBufferView,//-浏览器专属:FormData,File,//-Node专属:data:firstName: //`timeout`指定请求超时的毫秒数(0表示无超时时间//如果请求话费了超
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年热电转换材料项目公司成立分析报告
- 2026年智能车载功放系统项目可行性研究报告
- 燃气设备日常点检方案
- 混凝土强度提升添加剂选用方案
- 数字转型背景下高职医学教师数字素养的现状分析
- 2026届青海省西宁市示范名校高二上生物期末联考模拟试题含解析
- 放射性物品运输专用通道
- 江西省上饶市广丰区2026届高二上数学期末质量跟踪监视试题含解析
- 2026年开封市建东城市建设发展有限公司招聘备考题库及参考答案详解1套
- 2026年云南省医药普洱有限公司招聘备考题库及参考答案详解1套
- (2025秋新版)人教版二年级数学上册全册教案(教学设计)
- 气压液压传动课件
- 2025年1月国开电大专本科《经济法学》期末纸质考试试题及答案
- 2025年高考真题-化学(黑吉辽卷) 含答案(黑龙江、吉林、辽宁、内蒙古)
- 中学生英语词汇表3500(全)
- 2025年全国基层退役军人服务中心(站)工作人员职业技能竞赛备考试题库(含答案)
- 高压灭菌锅操作培训
- 音视频系统调试方案与标准
- 2024年江苏南通中考满分作文《前进我有我的姿态》8
- 小产权房购房合同示范文本
- 建筑装饰材料与施工工艺知到智慧树章节测试课后答案2024年秋荆门职业学院
评论
0/150
提交评论