vue.js学习记录

文章已同步我的github笔记https://github.com/ymblog/blog,欢迎大家加star~~

vue实例

生命周期

beforeCreate:不能访问this.$el和this.$data用于初始化非响应式变量
created:可以访问this.$data,不能访问到this.$el属性,this.$refs内容,用于ajax请求,created里赋值,data不用定义
beforeMount:this.$el和this.$data都初始化了,挂载前this.$el的值为'虚拟'的元素节点,比较少使用
mounted:'虚拟'的Dom节点被真实的Dom节点替换,用于获取VNode信息和操作,this.$refs可以访问
beforeupdate:响应式数据更新时调用,发生在虚拟DOM打补丁之前
updated:虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,data数据变化时只会触发update
beforeDestroy:实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例,用于销毁定时器、解绑全局事件、销毁插件对象等操作
destroyed:实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁

指令

指令带有 v- 前缀的特殊属性

v-html

解释:更新DOM对象的textContent,为了输出真正的 HTML
还有v-on、v-bind、v-model、v-for、v-if、v-else、v-else-if不展开说明
注意:v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级
v-if和v-show的区别:v-show适合非常频繁地切换

修饰符

事件修饰符:


.stop 阻止冒泡,调用 event.stopPropagation()
.prevent 阻止默认行为,调用 event.preventDefault()
.once事件只触发一次

按键修饰符:
@keyup.enter……
表单修饰符:
.lazy、.number、.trim

key

推荐:使用 v-for 的时候提供 key 属性,以获得性能提升
说明:使用 key,VUE会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素,vue会复用已有元素,使用两个input切换会共用,需要使用key让其独立

Class 与 Style 绑定

表达式的类型:字符串、数组、对象(重点)


//1
<div v-bind:class="{ active: true }"></div> ===> 解析后
<div class="active"></div>
//2
<div v-bind:class="[{ active: true }, errorClass]"></div> ===>解析后
<div class="active text-danger"></div>

组件

prop

定义组件名kebab-case或者PascalCase(自己使用)


//使用prop来传值:
//子组件html
<template>
<header class="ly-header">
<span>{{title}}</span>
</header>
</template>
//js
props:['content','value']
进行验证,type类型有:Number、String、Boolean、Array、Object
propA: {
type: Number,
default: 100
}
//父组件html
<header :title="我是标题">

注意:父级组件<comp some-prop="1"></comp>1为字符串,使用:some-prop="1",1为数字

通过事件向父级组件发送消息

推荐始终使用 kebab-case 的事件名
$emit方法并传入事件的名字,来向父级组件触发一个事件


//子级
&lt;template&gt;
&lt;div class="header" @click="$emit('say-event')"&gt;点击我&lt;/div&gt;
&lt;/template&gt;
//父级
&lt;template&gt;
&lt;Header :content="content" @say-event="sayHanle"&gt;&lt;/Header&gt;
&lt;/template&gt;
&lt;script&gt;
import Header from '@/components/header';
export default{
methods:{
sayHanle(){
console.log(222);
}
}
}
&lt;/script&gt;

动态组件-is


//currentTabComponent改变,组件也随之改变
&lt;component v-bind:is="currentTabComponent"&gt;&lt;/component&gt;

插槽-slot

说明:通过<slot></slot> 标签指定内容展示区域


//子级定义
&lt;template&gt;
&lt;div class="header"&gt;
&lt;slot name="title"&gt;&lt;/slot&gt;
&lt;slot name="desc"&gt;&lt;/slot&gt;
&lt;/div&gt;
&lt;/template&gt;
//父级
&lt;Header&gt;
&lt;p slot="desc" class="desc"&gt;我的描述&lt;/p&gt;
&lt;/Header&gt;

自定义指令

作用:进行DOM操作


//全局定义
Vue.directive('focus', {
inserted: function (el) {
el.focus()
}
}

钩子函数
bind:指令第一次绑定到元素时调用
inserted:被绑定元素插入父节点时调用
unbind:只调用一次,指令与元素解绑时调用

过滤器

作用:文本数据格式化


//全局过滤器
&lt;div&gt;{{ dateStr | date }}&lt;/div&gt;
&lt;div&gt;{{ dateStr | date('YYYY-MM-DD hh:mm:ss') }}&lt;/div&gt; &lt;script&gt;
Vue.filter('date', function(value, format) {
// value 要过滤的字符串内容,比如:dateStr
// format 过滤器的参数,比如:'YYYY-MM-DD hh:mm:ss'
})
&lt;/script&gt;
//局部过滤器
filters: {
filterName: function(value, format) {}
}

监视数据变化-watch

作用:当表达式的值发生变化后,会调用对应的回调函数完成响应的监视操作


watch:{
info:function(val,oldVal){
console.log('当前值为:' + val, '旧值为:' + oldVal)
}
} 选项包括有三个
第一个是handler:其值是一个回调函数,即监听到变化时应该执行的函数。
第二个是deep:其值是true或false,确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到)
第三个是immediate:其值是true或false,确认是否以当前的初始值执行handler的函数。

结束,撒花~~~

文章已同步我的github笔记https://github.com/ymblog/blog,欢迎大家加star~~

来源:https://segmentfault.com/a/1190000016551191

vue.js学习记录的更多相关文章

  1. Js 框架之Vue .JS学习记录 ① 与Vue 初识

    目录 与 Vue.js 认识 VUE.JS是个啥?有啥好处? Vue 的目标 战前准备  VUE.JS环境 VUE.JS 尝试一下,你就明白 第一步 实例化VUE 对象 第二步VueAPP 调用数据 ...

  2. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  3. 我的three.js学习记录(二)

    通过上一篇文章我的three.js学习记录(一)基本上是入门了three.js,但是这不够3D,这次我希望能把之前做的demo弄出来,然后通过例子来分析操作步骤. 1. 示例 上图是之前做的一个dem ...

  4. 我的three.js学习记录(三)

    此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...

  5. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  6. vue.js学习资料

    vue.js学习VuejsAPI教程 https://vuejs.org.cn/guide/Vuejs自己的构建工具 http://www.jianshu.com/p/f8e21d87a572如何用v ...

  7. Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

    f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  8. vue.js学习之better-scroll封装的轮播图初始化失败

    vue.js学习之better-scroll封装的轮播图初始化失败 问题一:slider组件初始化失败 原因:页面异步获取数据很慢,导致slider初始化之后,数据还未获取到,导致图片还未加载 解决方 ...

  9. vue.js学习之 跨域请求代理与axios传参

    vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...

随机推荐

  1. js 复杂研究

    function test_001() { var t =0; return t || out_str("t未定义"), //1 // 执行1句;在执行2句; t||null // ...

  2. 【java工具类】删除文件及目录

    FileUtil.java /** * 删除文件及目录 * @param file; */ public static boolean delFile(File file) { if (!file.e ...

  3. linux下简易端口扫描器

    #include<iostream> #include<string.h> #include<sys/types.h> #include<sys/socket ...

  4. React 初试

    小Demo, 后面会进行拓展的 import React from 'react'; import ReactDOM from 'react-dom'; class Welcome extends R ...

  5. adaptiveThreshold(自适应阈值)

    void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thr ...

  6. Spring Cloud Stream教程(二)主要概念

    Spring Cloud Stream提供了一些简化了消息驱动的微服务应用程序编写的抽象和原语.本节概述了以下内容: Spring Cloud Stream的应用模型 Binder抽象 持续的发布 - ...

  7. Maven开发环境搭建

    配置Maven流程: 1.下载Maven,官网:http://maven.apache.org/ 2.安装到本地: 1 ).解压apache-maven-x.x.x-bin.zip文件 2 ).配置M ...

  8. QBXT Day 5图论相关

    图论是NOIP的一个非常重要的考点,换句话说,没有图论,NOIP的考纲就得少一大半(虽然很NOIP没有考纲) 图论这玩意吧,和数论一样是非常变态的东西,知识点又多又杂,但是好在一个事,他比较直观比较好 ...

  9. Jmeter接口测试系列之测试用例编写和调用

    在使用Jmeter进行接口测试时,首先需要根据接口定义,编写响应的接口测试用例,在编写接口测试用例时,我们根据测试的侧重点不同,使用不同的方式编译测试用例. 一种是:整个请求参数作为一个变量,进行测试 ...

  10. 系统分析与设计HW6

    1. 使用 UML State Model建模 建模对象: 参考 Asg_RH 文档, 对 Reservation/Order 对象建模. 建模要求: 参考练习不能提供足够信息帮助你对订单对象建模,请 ...