Vue.js基础教程
栏目: JavaScript · 发布时间: 6年前
内容简介:文章链接:开发工具准备:<!--more-->
文章链接: Vue.js基础教程
开发 工具 准备:
- 根据个人喜欢选择
IDE,我使用的是WebStorm,推荐使用Atom和VSCode; - 安装
git base和node.js; - 安装
vue-cli,命令npm i -g @vue/cli; -
新建
vue-cli项目:vue ui vue create project-name
- 运行项目
npm run serve,端口8080。
<!--more-->
双向绑定v-model
双向绑定大多用于表单事件,通过监听使用者输入的事件来更新内容。
现阶段大部分工作在 App.vue 上, template 与普通写法一致, js 写法:
export default {
name: 'app',
data() {
return {
title: 'vue.js',
myname: '请输入名字'
}
}
}
去掉空白符 .trim
直接在 v-model 后加上 .trim 即可。
<input type="text" v-model.trim="name" value="name">
懒加载 .lazy
在离开 input 时才更新输入的内容,在 v-model 后加上 .lazy 即可。
限定输入数字 .number
在 v-model 后加上 .number 即可。
遍历 v-for
遍历有一个基本的模板:
<div id="app">
<ul v-for="(item,index) in member" :key="index">
<li>{{item}}</li>
</ul>
</div>
组件 component
在 App.vue 中引入 components 中的组件:
<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 组件中进行。
<p class="codepen" data-height="265" data-theme-id="0" data-default-tab="js" data-user="whjin" data-slug-hash="darQdg" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid black; margin: 1em 0; padding: 1em;" data-pen-title="props接收数据">
<span>See the Pen
by whjin ( @whjin )
on CodePen .</span>
</p>
<script async src=" https://static.codepen.io/ass... ;></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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
视觉SLAM十四讲
高翔、张涛、等 / 电子工业出版社 / 2017-3 / 75
《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。 《视觉SLAM十四讲:从理论到实践》可以作为对SLAM 感兴趣的研究人员的入门自学材料,也可以作为SLAM......一起来看看 《视觉SLAM十四讲》 这本书的介绍吧!