标签:整数 管道 实现 node 响应式 笔记 model 前缀 阶段
官网:Vue.js https://cn.vuejs.org/
官方文档:介绍 — Vue.js https://cn.vuejs.org/v2/guide/
API 参考:API — Vue.js https://cn.vuejs.org/v2/api/
附:vue.js(1.0版本) https://v1-cn.vuejs.org/ (教程和API自行寻找)
官方文档:介绍 | Vue Router https://router.vuejs.org/zh/
API 参考:API 参考 | Vue Router https://router.vuejs.org/zh/api/
Vue.js 教程 | 菜鸟教程 http://www.runoob.com/vue2/vue-tutorial.html
注:此部分仅用于自己整理理解。对其他人可能不适用。请知悉~~
使用:具体可参考菜鸟教程实例:
大致就是
除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。(这些就相当于Vue内置的方法了,和一些框架,jar包呀什么的,其他什么的区别不大)
就是说:
修饰符是以半角句号.
指明的特殊后缀,用于指出一个指定应该以特殊方式绑定。
例如,.prevent
修饰符告诉 v-on
指令对于触发的事件调用 event.preventDefault()
:
指令后的字符串必须是VUE中声明的属性或方法。
v-on
指令,它用于监听 DOM 事件。缩写:@
v-bind
指令被用来响应地更新 HTML 属性。缩写::
v-model
指令来实现双向数据绑定:
v-if
指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
v-else
指令:给 v-if 添加一个 "else" 块;
v-else-if
: 在 2.1.0 新增,顾名思义,用作 v-if 的 else-if 块。可以链式的多次使用。
v-show
:根据条件展示元素
v-for
指令:要以 (value, key, index) in sites [key和index可选]形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。()
Vue.js 允许你自定义过滤器,被用作一些常见的文本格式化。由"管道符" |
指示。
过滤器函数接受表达式的值作为第一个参数,第二个过滤器实际是自定义的方法( JavaScript 函数),用于对第一个参数进行处理。过滤器可以有多个。
相当于可以根据要扩展get和set方法,并且性能好一点,不然你就只能取到原值了。
计算属性关键词: computed。(实际和一个method差不多,不过这个可以理解为默认是对应对象的get方法,在取值时自动调用。另外你也可以提供一个 setter方法,在赋值时自动调用。对应的实际代码可以见:Vue.js 计算属性 | 菜鸟教程 http://www.runoob.com/vue2/vue-computed.html )
computed vs methods:效果一样,但 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。
Vue.js 监听属性 watch,可以通过 watch 来响应数据的变化
总结:
对于vue的属性,可以理解为是Vue封装的一些最佳实践,通过这些属性,你可以简单方便,高性能的实现想要的功能。大致就是这样
v-bind
在处理 class
和 style
时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。
在 v-bind:style
里直接设置样式
内联样式的实现和样式差不多,可以使用:字符串,对象,或者数组(一个数组里可以包含多个对象)。
事件监听可以使用 v-on 指令:
on后面可以跟:
v-on 提供了事件修饰符来处理 DOM 事件细节(修饰符可以串联)
.stop
.prevent
.capture
.self
.once
不过修饰符的作用是什么?需看下官方文档。
具体见文档吧..毕竟很多
v-model 指令在表单控件元素上创建双向数据绑定。
v-model 会根据控件类型自动选取正确的方法来更新元素。
意思即使:表单通过v-model 绑定了一个VUE里面的数据,如果表单上的数据变了,VUE里面的数据同步改变。而vue里面数据的改变,会导致html页面立即刷新的感觉么。如果多个表单使用v-model绑定同一个VUE里面的数据,那么任何一个改变,其他所有都会同步改变。好神奇呀。
不过v-model 绑定的对应事件,好像是对应的表单已经定义好的选中事件,并不是自己可以随便定义的那些。
组件可以扩展 HTML 元素,封装可重用的代码。
注册一个全局组件语法格式如下:
Vue.component(tagName, options)
tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:
<tagName></tagName>
组件的template属性是组件的内容。组件是可以复用代码的意思。
所有地方都可以用。
需在一个Vue对象里声明,则只会在Vue对象绑定的html元素里使用
// 创建根实例
new Vue({
el: ‘#app‘,
components: {
// <runoob> 将只在父模板可用
‘runoob‘: Child
}
})
prop 是父组件用来传递数据的一个自定义属性。
父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop"。
意思就是:使用组件时,可以传入一个参数,或者赋值给对象等。然后在组件的template内,使用传入的数据(不过使用前需要先用prop属性获取对应的数据)。大概是这个意思。
(prop 单向绑定:父组件属性变化将传导给子组件,但不会反过来。)
类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件。
大概就是:在组件中可以使用 v-bind指令来传入对应的值,如果 v-bind 指令绑定的对象值发生了改变,那么对应的组件里的值也会发生改变
组件可以为 props
指定验证要求。
当 prop
是一个对象而不是字符串数组时,它包含验证要求。
即:当prop是字符串数组,他就是简单的获取值的意思。如果prop 是一个对象,那么对于获取到的值,自动包含验证功能,实现可以参考:{prop:{ }}
。里面的中括号可以包含验证(即验证方法)的基本要求。比如数据类型验证,是否必须,默认值,以及方法实现等,还可以有。
type 可以是下面原生构造器
type 也可以是一个自定义构造器,使用 instanceof 检测。
父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!
我们可以使用 v-on 绑定自定义事件, 每个 Vue 实例都实现了事件接口(Events interface),即:
$on(eventName)
监听事件$emit(eventName)
触发事件另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。
大概的意思就是:在父组件上用 v-on 绑定一个自定义事件,事件有自己的执行方法逻辑。当子组件改变时,可以在自己的方法里,手动调用$emit(eventName)
来触发事件,调用父组件对应的方法逻辑,实现功能。
为什么要叫自定义事件恩,因为就是单纯实现这种功能而实现的一个自定义事件。
除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。
Vue.directive() 方法:
和局部组件很类似。在Vue实例内部注册。使用directives属性。
指令定义函数提供了几个钩子函数(可选)
bind
: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。inserted
: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。update
: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。componentUpdated
: 被绑定元素所在模板完成一次更新周期时调用。unbind
: 只调用一次, 指令与元素解绑时调用。钩子函数的参数有:
v-
前缀。v-my-directive="1 + 1"
, value 的值是 2
。update
和 componentUpdated
钩子中可用。无论值是否改变都可用。v-my-directive="1 + 1"
, expression 的值是 "1 + 1"
。v-my-directive:foo
, arg 的值是 "foo"
。v-my-directive.foo.bar
, 修饰符对象 modifiers 的值是 { foo: true, bar: true }
。update
和 componentUpdated
钩子中可用。注意:有时候我们不需要其他钩子函数(即只有一个时),我们可以简写函数。即当钩子函数只有一个时,可以用简化的预发。
Vue.js 路由允许我们通过不同的 URL 访问不同的内容。
通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。
vuejs/vue-router: ?? The official router for Vue.js. https://github.com/vuejs/vue-router (源码相关的git项目)
介绍 | Vue Router https://router.vuejs.org/zh/ (中文的官方文档奥)
Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。
<transition name = "nameoftransition">
<div></div>
</transition>
大致理解为,使用transition标签,用name制定前缀,然后以name开头定义一些特定的CSS,实现过渡效果。
过渡其实就是一个淡入淡出的效果。Vue在元素显示与隐藏的过渡中,提供了 6 个 class 来切换:
v-enter
:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。v-enter-active
:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。v-enter-to
: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter
被移除),在过渡/动画完成之后移除。v-leave
: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。v-leave-active
:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。v-leave-to
: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave
被删除),在过渡/动画完成之后移除。通常我们都使用 CSS 过渡来实现效果。
CSS 动画用法类似 CSS 过渡,但是在动画中 v-enter 类名在节点插入 DOM 后不会立即删除,而是在 animationend 事件触发时删除。
我们可以通过以下特性来自定义过渡类名:
enter-class
enter-active-class
enter-to-class
(2.1.8+)leave-class
leave-active-class
leave-to-class
(2.1.8+)自定义过渡的类名优先级高于普通的类名,这样就能很好的与第三方(如:animate.css)的动画库结合使用。
自定义过渡类名的语法:标准格式在前,name名在后。
这些钩子函数可以结合 CSS transitions/animations 使用,也可以单独使用。
当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。
推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false"
,Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。
所谓的JavaScript 钩子是指:不使用制定的CSS格式,而是使用v-on调用函数方法,然后在JS函数方法中,通过对象给Dom赋值CSS样式,实现过渡效果。
可以通过 appear
特性设置节点在初始渲染的过渡。和其他的enter,leave等很类似。
这里默认和进入/离开过渡一样,同样也可以自定义 CSS 类名。
自定义 JavaScript 钩子:
当有相同标签名的元素切换时,需要通过 key
特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。
标签:整数 管道 实现 node 响应式 笔记 model 前缀 阶段
原文地址:https://www.cnblogs.com/buwuliao/p/9584493.html