文章连接: Vue.js基础教程
开发工具准备:javascript
IDE
,我使用的是WebStorm
,推荐使用Atom
和VSCode
;git base
和node.js
;vue-cli
,命令npm i -g @vue/cli
;新建vue-cli
项目:css
vue ui
;vue create project-name
npm run serve
,端口8080
。<!--more-->html
双向绑定大多用于表单事件,经过监听使用者输入的事件来更新内容。vue
现阶段大部分工做在App.vue
上,template
与普通写法一致,js
写法:java
export default { name: 'app', data() { return { title: 'vue.js', myname: '请输入名字' } } }
.trim
直接在v-model
后加上.trim
便可。node
<input type="text" v-model.trim="name" value="name">
.lazy
在离开input
时才更新输入的内容,在v-model
后加上.lazy
便可。git
.number
在v-model
后加上.number
便可。github
v-for
遍历有一个基本的模板:vue-cli
<div id="app"> <ul v-for="(item,index) in member" :key="index"> <li>{{item}}</li> </ul> </div>
component
在App.vue
中引入components
中的组件:npm
<template> <div id="app"> <Card /> </div> </template> <script> import Card from './components/Card' export default { components: { Card } } </script>
props
<template> <div id="app"> <Card :cardData="cardData"/> </div> </template>
其中:cardData="cardData"
是这个组件的核心,用于绑定属性cardData
。其余数据展现工做放在Card.vue
组件中进行。
JS Result EDIT ON <template> <div class="card_wall"> <div class="card" v-for="item in cardData" :key="item.name"> <div class="card_title">{{item.name}}</div> <div class="card_body"> <p>生日:{{item.birthday}}</p> <p>E-mail:{{item.mail}}</p> </div> </div> </div> </template> <script> export default { props: { cardData: { type: Array, required: true } } } </script>
这里解析一下<div class="card_wall"></div>
包裹<div class="card"></div>
主要是方便后期应用扩展,以及让应用总体更稳定。
我不喜欢用官网的生命流程图来说解这个内容,使用文字表达更加让思惟清晰。
DOM
并在数据变化时更新DOM
等;生命周期钩子简介
beforeCreate
:实例初始化created
:实例创建完成(能够取得$data
)beforeMount
:模板挂载以前(尚未生成html
)mounted
:模板挂载完成beforeUpdate
:若是data
发生变化,触发组件更新,从新渲染updated
:更新完成beforeDestroy
:实例销毁以前(实例还可使用)destroyed
:实例已销毁(全部绑定被解除、全部事件监听器被移除、全部子实例被移除)生命周期钩子用得最多的是mounted
,主要用在调用属性、方法的时候,
v-once
指令第一次渲染完成后变为静态内容,其下的全部子元素都是这样的效果。
v-pre
指令v-pre
指令会让指定元素被忽略。
v-cloak
指令v-cloak
指令用于去除页面渲染数据时出现闪现的状况,使用方法:
<template> <div id="app"> <div v-cloak>${ item.title }</div> </div> </template> <style> [v-cloak] { display: none; } </style>
v-html
指令v-html
指令会把html
标签渲染成DOM
显示在页面上。
v-html
指令只能对可信任的用户使用,不然容易受到XSS
攻击。
Vue动画通常在真正须要使用的状况下才加入页面,推荐在CSS中使用动画。
v-if
条件渲染v-show
条件显示v-enter
定义进入渐变时开始的样式。
v-enter-active
定义进入渐变的过程效果,能够设定渐变过程的时间(duration
)和速度曲线(easing curve
)。
v-enter-to
定义进入渐变后结束的样式。
v-enter
被移除,并在完成进入渐变动画时移除。v-leave
定义离开渐变时开始的样式。
v-leave-active
定义离开渐变的过程效果,能够设定渐变过程的时间(duration
)和速度曲线(easing curve
)。
v-leave-to
定义离开渐变后结束的样式。
v-enter
被移除,并在完成离开渐变动画时移除。transition
自定义名称<template> <div id="app"> <div class="main"> <button @click="change = !change">縮放控制器</button> <transition name="zoom"> <div v-if="change" class="ant_man_style"></div> </transition> </div> </div> </template>
.zoom-enter, .zoom-leave-to { width: 0px; height: 0px; } .zoom-enter-active, .zoom-leave-active { transition: width 1s, height 1s; }
animation
可使用CSS中的animation
动画设计更为华丽的效果。
.zoom-leave-active { animation: special_effects 1.5s; } .zoom-enter-active { animation: special_effects 1.5s reverse; } @keyframes special_effects {}
transition
自定义动画类别除了在<transition>
中设定name
自定义前缀(属性),还能够预设动画类别。
enter-class
定义进入动画时开始的样式。enter-active-class
定义进入动画的过程效果。enter-to-class
定义进入动画后结束的样式。leave-class
定义离开动画时开始的样式。leave-active-class
定义离开动画的过程效果。leave-to-class
定义离开动画后结束的样式。以上六个自定义属性优先级别高于通常渐变类别。
CSS动画库: Animation.css
JavaScript
钩子<transition>
还能够绑定JavaScriptHooks,除了单独使用,也能结合CSS transition
和animations
一块儿使用。
beforeEnter(el)
在进入渐变或动画前生效。enter(el,callback)
在进入渐变或动画的组件插入时生效。afterEnter(el)
在进入渐变或动画结束时生效。enterCanceled(el)
在未完成渐变或动画时取消。beforeLeave(el)
在离开渐变或动画前生效。leaveCancelled(el)
在未完成渐变或动画时取消。<transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter" @enter-cancelled="enterCancelled" @before-leave="beforeLeave" @leave="leave" @after-leave="afterLeave" @leave-cancelled="leaveCancelled"> <div v-if="change" class="ant_man_style"></div> </transition>
在enter
和leave
中必须使用done
,否则它们会同时生效,动画也会瞬间完成。
若是想要设定一开始载入画面时组件的渐变效果,能够经过设定appear
属性来实现。
appear-class
载入时开始的样式。appear-to-class
载入过程的样式。appear-active-class
载入结束时样式。<transition appear appear-class="show-appear-class" appear-to-class="show-appear-to-class" appear-active-class="show-appear-active-class"> </transition>
先在<transition>
标签内加入appear
,接着相似自定义动画能够给class name
命名。
JavaScript Hooks
beforeAppear
载入前appear
载入时afterAppear
载入后appearCancelled
取消载入(载入开始后)<div id="app"> <transition appear @before-appear="beforeAppear" @appear="appear" @after-appear="afterAppear" @appear-cancelled="appearCancelled"> <div v-if="change" class="ant_man_style"></div> </transition> </div>
key
对相同的标签元素使用key
进行区分。
in-out
和out-in
in-out
模式out-in
模式<transition mode="out-in"></transition> <transition mode="in-out"></transition>
<transition-group>
会渲染出一个html
标签,预设是<span>
,也能够选择自定义tag
为其余标签。in-out
和out-in
),由于再也不是元素之间来回切换。key
值,不能重复。<transition-group>
可以改变数组的排序,使用前须要先安装shuffle
npm i --save lodash.shuffle let shuffle = require('lodash.shuffle')
filter
filters
串联filter
能够同时串联多个filter
函数。
filters
参数$emit
props
把数据传递给子组件。$emit
触发父组件的自定义事件。