vue.js组件
组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:
注册一个全局组件语法格式如下:
全局组件:所有定义的vue实例都可以使用全局组件.
template是模板组件,用来定义自定义模板.
局部组件:可以在实例选项中注册局部组件,这样组件只能在这个实例中使用
在实例中声明了只有one实例可以调用局部组件,所以只会输出one实例中定义的内容.
prop:父组件用来传递数据的一个自定义属性
父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 “prop”:
动态 Prop:
首先使用了v-model对输入框进行了双向数据绑定,使得vue可以响应页面数据变化.
再用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件.
注意: prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。
Prop可以传递类型是多种多样的,比如:数字,布尔值,数组,对象,对象属性
如果生产需求中需要子组件把数据传递回父组件,就得使用自定义事件:
子组件使用了emit来进行通知父组件,这样就形成父子组件间的相互呼应传递信息,其实在开发的过程中父子组件通讯也都是使用这样的方法,父组件传递信息给子组件的时候会通过props参数,通常不会直接在子组件中修改父组件传递下来的信息,而且通过这样的一个钩子去通知父组件对某些参数进行改变.
vue指令
vue常用的内置指令
vue.js自定义指令
自定义指令存在的意义就是让开发人员根据实际情况自己定义指令.Vue 也允许注册自定义指令。
全局指令
我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时元素获得焦点.
Vue.directive表示自定义指令.对内置指令做一些补充和扩展.
定义方法:vue.directive(id,definition)两个参数:指令ID和定义对象,定义对象提供了一些钩子函数。
局部指令
在实例使用 directives 选项来注册局部指令,这样指令只能在这个实例中使用
钩子函数:指令定义对象的函数.
从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期!
钩子函数就是生命周期事件的别名而已;
bind: 只调用一次,指令第一次绑定到元素时调用
inserted: 被绑定元素插入父节点时调用。
update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。
componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
unbind: 只调用一次,指令与元素解绑时调用。
钩子函数参数
el: 指令所绑定的元素,可以用来直接操作 DOM 。
binding: 一个对象,包含以下属性:
name: 指令名,不包括 v- 前缀。
value: 指令的绑定值.
oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。
expression: 绑定值的表达式或变量名。
arg: 传给指令的参数。
modifiers: 一个包含修饰符的对象。
vnode: Vue编译生成的虚拟节点。
oldVnode: 上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。
钩子函数实例
如下实例就是调用了钩子函数bind,对el,binding,vnode参数相关内容进行了输出.
不需要其他的钩子函数时可以简写函数:
Vue.js 路由:允许我们通过不同的URL访问不同的内容.
安装引入vue路由:
实例:vue.js+vue.router实现单页应用
router-link 是一个组件,该组件用于设置一个导航链接,切换不同 HTML 内容,to 属性为目标地址,即要显示的内容。
HTML:router-view指的是路由的出口!
js代码:
const用来声明变量.vue对象中绑定块元素的两种方式:
1.通过 vue 对象中声明 el 属性绑定操作块元素选择器
2.通过在vue对象后面.$mount(‘选择器’)绑定操作块元素
运行结果:点击不同的链接可以切换不同的HTML内容
NPM 路由实例:
访问 http://localhost:8080 测试效果:
Vue过渡:
由于这部分内容用图片无法直观的演示动画效果.可以在下方我给出的链接去看更多的参数讲解.
css3动画属性详解之transform、transition、animation
过渡就是一个淡入淡出的过程,vue在元素显示与隐藏的过渡中提供了6个class来切换.
v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
v-enter-active:定义进入过渡生效时的状态。
v-enter-to: 定义进入过渡的结束状态。在元素被插入之后下一帧生效
v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
v-leave-active:定义离开过渡生效时的状态。
v-leave-to: 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效
Vue过渡实例–transition指的是过渡
如果你使用一个没有名字的 transition,则 v- 是这些类名的默认前缀。如果你使用了transition name=“my-transition”,那么 v-enter 会替换为 my-transition-enter。opacity属性设置元素的不透明级别.
CSS 过渡:最常用的过渡方式.
transfrom表示变换如移动,旋转等.cubic-bezier指的是贝塞尔曲线.
CSS 动画:
animationend主要是实现动画属性的.为元素设置一些动画效果.
scale()表示比例.@keyframs用来定义一个动画.并设置动画效果.
自定义过渡的类名
我们可以通过以下特性来自定义过渡类名:
enter-class enter-active-class
enter-to-class (2.1.8+) leave-class
leave-active-class leave-to-class (2.1.8+)
自定义过渡的类名优先级高于普通的类名,对于结合第三方CSS动画库很有用.
也可以显性的定义过渡过程中的持续时间.
Vue.js 混入
混入 (mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入定义了一部分可复用的方法或者计算属性。通俗的理解就是:混入就是定义一个对象包含公共的方法或者数据,计算属性等,然后混入到多个组件使用,方便管理与统一修改.
选项合并
当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。
Document.write()就是打印输出的意思. br是换行标签也可以使用\n.
如果 methods 选项中有相同的函数名,则 Vue 实例优先级会较高
全局混入
也可以全局注册混入对象。注意使用! 一旦使用全局混入对象,将会影响到所有之后创建的 Vue 实例。使用恰当时,可以为自定义对象注入处理逻辑。
全局混入的不安全性演示:
Vue.js Ajax(vue-resource)
我们现在做单页应用程序属于前后端分离开发,那么这个单页应用程序中的数据就得通过ajax的方式获取,也要通过ajax的方式提交到后端。vue.js本身没有封装ajax操作库,所以我们要通过Vue-resource和Axios来进行ajax操作.
Console.log()主要是为了调试js用的,你可以看到你在页面中输出的内容.
window.onload是一个事件,在文档加载完成之后立即触发,并且能够为时间注册事件处理函数.将要对对象或者模块进行操作的代码存放在处理函数中。
get请求:
post 请求
post 发送数据到后端,需要第三个参数 {emulateJSON:true}。
emulateJSON 的作用:如果Web服务器无法处理编码为application/json的请求,你可以启用 emulateJSON 选项
Vue.js 响应接口
Vue.set
控制台输出
如上控制台输出可以看到的,在产品中添加了数量属性 qty,但是 get/set 方法只可用于 id,name 和 price 属性,却不能在 qty 属性中使用。我们不能通过添加 Vue 对象来实现响应。 Vue 主要在开始时创建所有属性。
如果我们要实现这个功能,可以通过 Vue.set 来实现:
从控制台输出的结果可以看出 get/set 方法可用于qty 属性
vue.delete—用于删除动态添加的属性 语法格式:
Vue.delete( target, key )
参数说明:target: 可以是对象或数组
key : 可以是字符串或数字
以上实例中我们使用 Vue.delete 来删除 price 属性。以下是控制台输出结果:
Vue.js构建工具vue-cli
1.安装:我的电脑均已安装不演示安装过程.
安装nodejs: sudo apt-get install nodejs
查看nodejs版本: node -v
安装npm: sudo apt-get install npm
安装vue-cli: sudo npm install -g vue-cli -g表示全局安装
查看vue版本,V是大写: vue -V
2.构建一个项目:
vue-cli 官方模板:
project-name : 标识项目名称
然后根据提示操作即可:
根据提示输入url就可以看到Vue的默认访问界面:
创建的项目目录详解