Vue.js - day01
插件推荐
vue官方推出的插件,高亮,一些提示
1561855247929.pngvue的代码提示
框架的学习方式
- 没有速成
- 官方文档是好朋友
- 很多问题,很多细节,很多面试题文档里面都有
- 文档的阅读方式
- 尝试:官网中的实例代码很多都是可以直接运行的,不要怕,不要怂,试一下
- 顺应框架的使用方式:
- 很多自己的约定,自己规则
- 遵守约定
Vue.js是什么
- 框架
- 让开发人员从dom操纵中解放出来,可以专注于逻辑,专注于数据
- 早期:获取dom元素,操纵他们
- 现在:修改数据,Vue自动的去操纵dom元素
Vue基本使用
- 导包
- 用包
- art-template有点类似
注意点
- el:后面的选择器建议用id
- el:后面一定不能写
body
和html
- data:中
- 字符串
- 数组
- 对象
- .. js中支持的类型都可以写
- Vue的使用需要new Vue
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
- 固定的东西
- new Vue
- el:
- data:
v-text指令
替换文本
<span v-text="msg"></span>
<!-- 和下面的一样 -->
<span>{{msg}}</span>
-
v-text
写法会直接替换标签内部的所有内容,比较暴力 -
{{Mustache}}
写法只会替换挖坑的地方,比较温和,使用频率最高- 可以叫 胡子语法
- 也可以叫做
差值表达式
v-html指令
- 替换元素的
innerHTML
,全部替换 - 标签元素会被解析
- 普通元素,直接设置文本
- 不能简写
- 适应频率,相比于
v-text
低
<div v-html="html"></div>
v-on指令
- 复杂写法
v-on:事件名='逻辑'
- 简化写法
@事件名='逻辑'
- 抽取为方法
@事件名='方法名'
- new Vue的时候写
methods:{ 方法(){} }
- 方法中如果要操纵数据,必须用
this
点出来才可以
- 数据只要改变,页面自动改变,Vue内部偷偷的把
数据和页面关联起来
高级使用(目前了解)
修饰符:
-
.stop
- 调用event.stopPropagation()
。 -
.prevent
- 调用event.preventDefault()
。 -
.capture
- 添加事件侦听器时使用 capture 模式。 -
.self
- 只当事件是从侦听器绑定的元素本身触发时才触发回调。 -
.{keyCode | keyAlias}
- 只当事件是从特定键触发时才触发回调。 -
.native
- 监听组件根元素的原生事件。 -
.once
- 只触发一次回调。 -
.left
- (2.2.0) 只当点击鼠标左键时触发。 -
.right
- (2.2.0) 只当点击鼠标右键时触发。 -
.middle
- (2.2.0) 只当点击鼠标中键时触发。 -
.passive
- (2.3.0) 以{ passive: true }
模式添加侦听器
变种写法
<!-- 方法处理器 -->
<button v-on:click="doThis"></button>
<!-- 动态事件 (2.6.0+) -->
<button v-on:[event]="doThis"></button>
<!-- 内联语句 -->
<button v-on:click="doThat('hello', $event)"></button>
<!-- 缩写 -->
<button @click="doThis"></button>
<!-- 动态事件缩写 (2.6.0+) -->
<button @[event]="doThis"></button>
<!-- 停止冒泡 -->
<button @click.stop="doThis"></button>
<!-- 阻止默认行为 -->
<button @click.prevent="doThis"></button>
<!-- 阻止默认行为,没有表达式 -->
<form @submit.prevent></form>
<!-- 串联修饰符 -->
<button @click.stop.prevent="doThis"></button>
<!-- 键修饰符,键别名 -->
<input @keyup.enter="onEnter">
<!-- 键修饰符,键代码 -->
<input @keyup.13="onEnter">
<!-- 点击回调只会触发一次 -->
<button v-on:click.once="doThis"></button>
<!-- 对象语法 (2.4.0+) -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
vue实例中的this
vue实例中的this-
new Vue的时候传入的对象是
实参
-
Vue构造函数内部会去解析数据,比如data最终直接设置给
Vue实例
-
而methods中的方法
this
就是Vue实例
- data的值已经直接设置上去了,所以直接
this.info
,this.num
就可以访问数据
- data的值已经直接设置上去了,所以直接
-
注意点:
-
写方法的时候,可以用箭头函数吗?
- 不可以
- 如果用了this会变成
window
- 箭头函数在创建时,this会跟上一级作用域中this绑定,并且不能改变
-
v-bind指令
-
属性绑定
- 写在标签内部的值:class,src,style,width,height,title,disabled(表单元素启用禁用)...
2.标准写法
v-bind:属性名=xxx
3.简化写法
:属性名=xx
(使用频率高)4.绑定的值改变了,页面自动更新
高级写法(有印象即可)
有各种变种写法,要有点印象,用到那个,讲解那个!!!
<!-- 绑定一个属性 --> <img v-bind:src="imageSrc"> <!-- 动态特性名 (2.6.0+) --> <button v-bind:[key]="value"></button> <!-- 缩写 --> <img :src="imageSrc"> <!-- 动态特性名缩写 (2.6.0+) --> <button :[key]="value"></button> <!-- 内联字符串拼接 --> <img :src="'/path/to/images/' + fileName"> <!-- class 绑定 --> <div :class="{ red: isRed }"></div> <div :class="[classA, classB]"></div> <div :class="[classA, { classB: isB, classC: isC }]"> <!-- style 绑定 --> <div :style="{ fontSize: size + 'px' }"></div> <div :style="[styleObjectA, styleObjectB]"></div> <!-- 绑定一个有属性的对象 --> <div v-bind="{ id: someProp, 'other-attr': otherProp }"></div> <!-- 通过 prop 修饰符绑定 DOM 属性 --> <div v-bind:text-content.prop="text"></div> <!-- prop 绑定。“prop”必须在 my-component 中声明。--> <my-component :prop="someThing"></my-component> <!-- 通过 $props 将父组件的 props 一起传给子组件 --> <child-component v-bind="$props"></child-component> <!-- XLink --> <svg><a :xlink:special="foo"></a></svg>
Demo-计数器
1561862280876.png实现步骤
- +和-使用
v-on
绑定点击事件 - 中间区域使用
v-text
, data中定义一个数字num
- +和-
- num=10, +不能用
- 灰:disabled
- ××:样式
- 可以写逻辑表达式
- num=0 , -不能用
- num=10, +不能用
注意点
- v-bind中可以写data中属性值,也可以写表达式
- 当data中的数据改变了,页面中所有和数据相关联的地方,都会改变
- 也是现在比较流行的开发方式
Demo-图片切换
1561863076198.png实现步骤
- 点击上一张 和下一张
v-on:click
- 切换图片的值:
v-bind:src
- data:图片地址数组 ,及索引
- 边界判断
注意点
- 逻辑比较复杂不建议写行内,建议抽取为方法
- 这里的逻辑和轮播图类似,除了不能自动
- 自动:setInterval
表单输入绑定 v-model
- data中定义一个属性
- 表单元素中
v-model
指定指定这个属性 - 修改表单元素的值时,这个属性会同步更新
- 如果直接修改属性的值
- v-model的表单元素会改变
- 使用属性的地方,同步更新
v-model(双向数据绑定)基本使用
双向的含义
1561864788566.png- 方向1:表单元素的 value改变,message同步改变
- 方向2:message改变,表单元素的value同步改变
v-for指令
-
v-for="item in 遍历的属性"
- item 每一项 (可以改)
- 数组的长度改变,页面会同步更新
- 如果数组的每一项是对象,可以通过点语法去获取内容
Demo-记事本
1561866363011.png561855238289.png)
实现步骤
- 文本框输入内容,点击回车页面中多一条数据
- v-model:表单元素的值和data中的属性关联起来
- keyup:keycode==13 代表回车
- @keyup.enter
- @keyup.13
- 触发的按键是 回车
-
v-for
结合data中定义数组noteList
- 双击删除点击的这一项
- v-on:dblclick
- 点击的时候获取当前这一项的索引
- 遍历时,可以获取索引的
-
v-for="(item, index) in items"
- item 每一项 可以改
- index 索引 可以改
注意点
- v-model会吧表单元素的value和data中的属性关联
- v-for可以结合数组遍历,前提是你得有数组
- 事件绑定时,可以传入参数,
- methods定义的时候要接收
- v-for可以获取下标
(item,index) in noteList
- item,index可以改
v-if指令
- v-if 根据表达式的值,决定元素是否显示
- 真 显示
- 假不显示
- v-else-if:elseif类似的 必须要跟在if的后面
- v-else:else类似的 必须要跟在if的后面
-
v-if
直接用多一些,后面跟上elseif及else用的不多
v-show指令
- 语法
v-show="表达式"
- true:显示
- false:隐藏
v-if&v-show对比
- v-show 隐藏是display:none
- 性能消耗小:频繁切换用show
- v-if 隐藏 从dom树中移除
- 性能消耗大:不频繁用if
语法细节
const app = new Vue({
el:"",
data:{},
methods:{}
})
Vue
el
data
methods
固定的
网友评论