VUE全局api

一、什么是全局API?

全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive。说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能。

二、Vue.directive自定义指令

我们在第一季就学习了内部指令,我们也可以定义一些属于自己的指令,比如我们要定义一个v-jspang的指令,作用就是让文字变成绿色。

在自定义指令前我们写一个小功能,在页面上有一个数字为10,数字的下面有一个按钮,我们每点击一次按钮后,数字加1.

你不妨模仿下面的功能,在自己本地先写出这个效果。我用JSRun提供了预览和代码展示功能,你也可以在线调试。

写好了这个功能,我们现在就自己定义一个全局的指令。我们这里使用Vue.directive( );

 可以看到数字已经变成了绿色,说明自定义指令起到了作用。可能您看这个代码还是有些不明白的,比如传入的三个参数到底是什么。

三、自定义指令中传递的三个参数

el: 指令所绑定的元素,可以用来直接操作DOM。

binding:  一个对象,包含指令的很多信息。

vnode: Vue编译生成的虚拟节点。

 

四、自定义指令的生命周期

自定义指令有五个生命周期(也叫钩子函数),分别是 bind,inserted,update,componentUpdated,unbind

  1. bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作。
  2. inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
  3. update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
  4. componentUpdated:被绑定元素所在模板完成一次更新周期时调用。
  5. unbind:只调用一次,指令与元素解绑时调用。

 

 


 

第2节:Vue.extend构造器的延伸

一、什么是Vue.extend?

Vue.extend 返回的是一个“扩展实例构造器”,也就是预设了部分选项的Vue实例构造器。经常服务于Vue.component用来生成组件,可以简单理解为当在模板中遇到该组件名称作为标签的自定义元素时,会自动调用“扩展实例构造器”来生产组件实例,并挂载到自定义元素上。

由于我们还没有学习Vue的自定义组件,所以我们先看跟组件无关的用途。

 

二、自定义无参数标签

我们想象一个需求,需求是这样的,要在博客页面多处显示作者的网名,并在网名上直接有链接地址。我们希望在html中只需要写<author></author> ,这和自定义组件很像,但是他没有传递任何参数,只是个静态标签。

我们的Vue.extend该登场了,我们先用它来编写一个扩展实例构造器。代码如下:

 

这时html中的标签还是不起作用的,因为扩展实例构造器是需要挂载的,我们再进行一次挂载。

这时我们在html写<author><author>就是管用的。我们来看一下全部代码:

最终实现结果:
三、挂载到普通标签上

还可以通过HTML标签上的id或者class来生成扩展实例构造器,Vue.extend里的代码是一样的,只是在挂载的时候,我们用类似jquery的选择器的方法,来进行挂载就可以了。

 

 


 

第3节:Vue.set全局操作

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法。比如在vue构造器内部定义了一个count为1的数据,我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue.set。

一、引用构造器外部数据:

什么是外部数据,就是不在Vue构造器里里的data处声明,而是在构造器外部声明,然后在data处引用就可以了。外部数据的加入让程序更加灵活,我们可以在外部获取任何想要的数据形式,然后让data引用。

看一个简单的代码:

二、在外部改变数据的三种方法:

1、用Vue.set改变

2、用Vue对象的方法添加

3、直接操作外部数据

其实这三种方式都可以操作外部的数据,Vue也给我们增加了一种操作外部数据的方法。

三、为什么要有Vue.set的存在?

由于Javascript的限制,Vue不能自动检测以下变动的数组。

*当你利用索引直接设置一个项时,vue不会为我们自动更新。

*当你修改数组的长度时,vue不会为我们自动更新。

看一段代码:

这时我们的界面是不会自动跟新数组的,我们需要用Vue.set(app.arr,1,’ddd’)来设置改变,vue才会给我们自动更新,这就是Vue.set存在的意义。

 

 


 

第4节:Vue的生命周期(钩子函数)

Vue一共有10个生命周期函数,我们可以利用这些函数在vue的每个阶段都进行操作数据或者改变内容。

其实在Vue的官网有一张图已经很好的诠释了生命周期,我在这里就不再多讲了,直接贴图,然后上程序代码。

 

我们直接来看一段代码:

 


 

第5节:Template 制作模版

一、直接写在选项里的模板

直接在构造器里的template选项后边编写。这种写法比较直观,但是如果模板html代码太多,不建议这么写。

javascript代码:

这里需要注意的是模板的标识不是单引号和双引号,而是,就是Tab上面的键。

二、写在<template>标签里的模板

这种写法更像是在写HTML代码,就算不会写Vue的人,也可以制作页面。

 

三、写在<script>标签里的模板

这种写模板的方法,可以让模板文件从外部引入。

这节课我们学习了Template的三种写法,以后学习到vue-cli的时候还会学到一种xxx.vue的写法。


 

第6节:Component 初识组件

前言(废话):component组件是Vue学习的重点、重点、重点,重要的事情说三遍。所以你必须学好Vue component。其实组件就是制作自定义的标签,这些标签在HTML中是没有的。比如:<jspang></jspang>,那我们就开始学习这种技巧吧。

一、全局化注册组件

全局化就是在构造器的外部用Vue.component来注册,我们注册现在就注册一个<jspang></jspang>的组件来体验一下。

我们在javascript里注册了一个组件,在HTML中调用了他。这就是最简单的一个组件的编写方法,并且它可以放到多个构造器的作用域里。

二、局部注册组件局部注册组件和全局注册组件是向对应的,局部注册的组件只能在组件注册的作用域里进行使用,其他作用域使用无效。

 

从代码中你可以看出局部注册其实就是写在构造器里,但是你需要注意的是,构造器里的components 是加s的,而全局注册是不加s的。

三、组件和指令的区别

组件注册的是一个标签,而指令注册的是已有标签里的一个属性。在实际开发中我们还是用组件比较多,指令用的比较少。因为指令看起来封装的没那么好,这只是个人观点。

 


 

第7节:Component 组件props 属性设置

props选项就是设置和获取标签上的属性值的,例如我们有一个自定义的组件<panda></panda>,这时我们想给他加个标签属性写成<panda here=’China’></panda> 意思就是熊猫来自中国,当然这里的China可以换成任何值。定义属性的选项是props。

一、定义属性并获取属性值

定义属性我们需要用props选项,加上数组形式的属性名称,例如:props:[‘here’]。在组件的模板里读出属性值只需要用插值的形式,例如{{ here }}.

上面的代码定义了panda的组件,并用props设置了here的属性值,在here属性值里传递了China给组件。

最后输出的结果是红色字体的Panda from China.

二、属性中带’-‘的处理方式

我们在写属性时经常会加入’-‘来进行分词,比如:<panda   from-here=”China”></panda>,那这时我们在props里如果写成props:[‘form-here’]是错误的,我们必须用小驼峰式写法props:[‘formHere’]。

html文件:

javascript文件:

PS:因为这里有坑,所以还是少用-为好。

三、在构造器里向组件中传值

把构造器中data的值传递给组件,我们只要进行绑定就可以了。就是我们第一季学的v-bind:xxx.

我们直接看代码:

Html文件:

javascript文件:

 

 

 


 

第8节:Component 父子组件关系

在实际开发中我们经常会遇到在一个自定义组件中要使用其他自定义组件,这就需要一个父子组件关系。

一、构造器外部写局部注册组件

上面上课我们都把局部组件的编写放到了构造器内部,如果组件代码量很大,会影响构造器的可读性,造成拖拉和错误。

我们把组件编写的代码放到构造器外部或者说单独文件。

我们需要先声明一个对象,对象里就是组件的内容。

声明好对象后在构造器里引用就可以了。

html中引用

 

二、父子组件的嵌套

我们先声明一个父组件,比如叫jspang,然后里边我们加入一个city组件,我们来看这样的代码如何写。

 

 


 

第9节:Component 标签

<component></component>标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件。

1.我们先在构造器外部定义三个不同的组件,分别是componentA,componentB和componentC.

2.我们在构造器的components选项里加入这三个组件。

3.我们在html里插入component标签,并绑定who数据,根据who的值不同,调用不同的组件。

这就是我们的组件标签的基本用法。我们提高以下,给页面加个按钮,每点以下更换一个组件。

转载于:https://www.cnblogs.com/vervin/p/8290574.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国运通使用AI技术检测欺诈行为 增强安全性

来源丨Forbes编译丨科技行者多年以来&#xff0c;美国运通一直是人工智能与认知技术领域的领导者。作为坐拥有庞大忠实客户群体的全球金融服务机构&#xff0c;保障客户账户安全一直是运通职能的重中之重。在很长一段时间里&#xff0c;发现并制止欺诈行为一直是美国运通公司的…

未来趋势?通过无线技术管理汽车电池,可消除90%物理布线

电动汽车的电池寿命要求远比手机电池要高。来源 | 雷锋网作者 | 伍文靓雷锋网按&#xff0c;当智能手机中的电池损耗殆尽&#xff0c;无法满足正常使用的续航体验时&#xff0c;用户往往会选择换一台新的设备&#xff0c;以此来解决问题。这是十分常规的操作。然而&#xff0c…

RF MEMS开关时代将开启?

来源&#xff1a;内容编译自「IEEE」&#xff0c;谢谢。二十年前&#xff0c;专门研究射频电路的工程师设想了一种“理想的开关”。这种开关“打开”时&#xff0c;它将具有超低电阻&#xff0c;“关闭”时将具有超高电阻等等。它体积小巧&#xff0c;快速&#xff0c;易于制造…

3dmax体积雾渲染不出来_【扮家家云渲染效果图】3Dmax体积光制作丛林光束|干货教程...

首先打开场景文件场景中创建了一些树木组成了森林的效果。首先要为场景创建灯光。单击创建&#xff0c;选择灯光&#xff0c;将类型切换为标准。接着单击目标平行光。在场景中拖拽进行创建&#xff0c;创建一盏目标平行光&#xff0c;然后单击修改&#xff0c;勾选阴影&#xf…

干货 | 机器人视觉三维成像技术全解析

来源&#xff1a;机器人创新生态在工业4.0时代&#xff0c;国家智能制造高速发展&#xff0c;传统的编程来执行某一动作的机器人已经难以满足现今的自动化需求。在很多应用场景下&#xff0c;需要为工业机器人安装一双眼睛&#xff0c;即机器人视觉成像感知系统&#xff0c;使机…

python海龟绘图_Python教学案例|海龟绘图三例

说明&#xff1a;海龟绘图网上的案例非常多&#xff0c;网上百度一搜就可以找到各种各样的不同绘图参考代码&#xff0c;简单的有&#xff0c;难的有绘制梵高画、九大行星图等等&#xff0c;有需求的最好问度娘&#xff0c;简单又方便。分享Python 基础教程:https://www.runoob…

后香农时代,华为提出10大数学挑战问题

来源&#xff1a;机器之心编辑&#xff1a;杜伟后香农时代的通信技术会如何发展&#xff1f;又有哪些值得业界关注的数学问题呢&#xff1f;在上月底结束的长沙「数学促进企业创新发展论坛」上&#xff0c;华为董事、战略研究院院长徐文伟抛出了后香农时代信息产业发展面临的了…

Oracle中如何查询一个表的所有字段名和数据类型

Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_NAME表名 查询例子 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_NAMEPUB_GOODS 添加排序后例子 select A.COLUMN…

美智库:下一代国防战略之竞争战略

来源&#xff1a;远望智库预见未来编译&#xff1a; 张涛&#xff08;远望智库技术预警中心&#xff09;美国新国家安全中心(CNAS)日前发布题为《竞争战略》的文章&#xff0c;作者梅兰妮西森撰文分析认为五角大楼的下一代国防战略需要一种能够说服盟友和胁迫对手的竞争战略。背…

mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)

一.概述mysql 提供了很多参数来进行服务器的设置&#xff0c;当服务第一次启动的时候&#xff0c;所有启动参数值都是系统默认的。这些参数在很多生产环境下并不能满足实际的应用需求。在这个系列中涉及到了linux 服务器&#xff0c;我这里是centos7.4, mysql 5.7,Xshell6。1. …

这里有一张中国的数字化地图,请查收

来源&#xff1a;腾讯研究院今天&#xff0c;在2020腾讯全球数字生态大会上&#xff0c;腾讯研究院联合腾讯云发布了《数字中国指数报告&#xff08;2020&#xff09;》。此次发布的报告显示&#xff1a;2019年数字中国指数继续保持高速增长&#xff0c;其中&#xff0c;以珠三…

华为王成录:把安卓最核心部分换得差不多了 手机升级鸿蒙OS 2.0水到渠成

内容来自网易新闻9月10日下午&#xff0c;华为在东莞松山湖举办了2020华为开发者大会&#xff0c;发布了鸿蒙OS 2.0、EMUI 11&#xff0c;并介绍HMS生态目前最新的成果和进展。大会上&#xff0c;华为消费者业务CEO余承东表示&#xff0c;鸿蒙OS 2.0全面使能全场景生态&#xf…

mybatis mysql5.7_spring boot整合ES+mysql5.7+mybatis+iview个人博客系统

项目描述目前博主正在开发自己的博客&#xff0c;分享的目的&#xff0c;是为了给自己留一版基础代码&#xff0c;好用来以后&#xff0c;做二次开发&#xff0c;也方便大家做二次开发。这个代码我还整合了其他的东西&#xff0c;比如qz定时器&#xff0c;shiro&#xff0c;只不…

人工智能写出第一篇文章:我真的没想要消灭你们,人类!

来源&#xff1a;网信科技前沿在攻克棋类&#xff0c;飞行操控&#xff0c;机器视觉&#xff0c;语音识别等领域后&#xff0c;人工智能又开始入侵写作领域。人工智能被人类开发出来是为了方便我们人类的生活&#xff0c;帮助人类处理一些事物&#xff0c;它的优点在于其拥有庞…

html间隔代码_HTML+CSS基础入门开发,经典Loading加载缩放动画特效

大家好&#xff0c;本篇文章分享经典Loading加载缩放动画特效&#xff0c;欢迎参考和指正。效果图&#xff1a;Loading加载缩放动画特效HTML代码&#xff1a;CSS代码&#xff1a;知识点&#xff1a;animation&#xff1a;是CSS3的动画属性&#xff0c;这里把animation绑定到tui…

造一个鸿蒙,仅有华为还不够

来源&#xff1a;雷锋网作者&#xff1a;肖漫“全场景”一词&#xff0c;可以说是整个开发者大会上的高频词汇&#xff0c;在介绍鸿蒙系统 2.0 时&#xff0c;余承东强调&#xff0c;鸿蒙 OS 是首个真正为全场景时代打造的分布式操作系统。用王成录会后采访的话说&#xff0c;鸿…

mysql怎么禁止远程连接_mysql如何设置禁止远程连接

mysql设置禁止远程连接的方法&#xff1a;1、登录数据库服务器&#xff0c;指定mysql数据库&#xff1b;2、执行【update user set hostlocalhost where userroot;】语句&#xff1b;3、刷新权限表。具体步骤&#xff1a;use mysql #打开mysql数据库#将host设置为localhost表示…

凌复华:冯·诺依曼在量子力学领域的贡献

来源&#xff1a;科学出版社约翰冯诺依曼(John von Neumann,1903.12.28—1957.2.8)这个名字, 对大多数读者都不会是陌生的.人们首先想到的很可能是他在研制世界上第一颗原子弹和第一台可编程数字式电子计算机中所做的贡献.这些确实是他的重要成就,但他对人类的贡献远不止于此.冯…

小程序 鼠标事件

微信小程序鼠标事件 事件分类 事件分为冒泡事件和非冒泡事件&#xff1a; 1. 冒泡事件(bind)&#xff1a;当一个组件上的事件被触发后&#xff0c;该事件会向父节点传递。 2. 非冒泡事件(catch)&#xff1a;当一个组件上的事件被触发后&#xff0c;该事件不会向父节点传递。 bi…

agd插值算法_(1)常见插值算法

图像的缩放很好理解,就是图像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具&#xff0c;画家常用它来放大图画。当然&#xff0c;在计算机上&#xff0c;我们不再需要用放大尺去放大或缩小图像了&#xff0c;把这个工作交给程序来完成就可以了。下面就来讲讲…