热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习Vue入门到实战——学习笔记(三)

1.过滤器               全局               私有2.Vue生命周期              什么是生命周期              主要的生命周期

vue

1.过滤器

                全局

                私有

2.Vue生命周期

               什么是生命周期

               主要的生命周期函数分类

               图文助解

               代码助解

过滤器

先看看官网是怎么说的:

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 Javascript 表达式的尾部,由“管道”符号指示:

{{ message | capitalize }}

全局过滤器

所有的vm实例都共享的。

示例:

将字符串中所有的 “单纯”  替换成   ”邪恶“

{{msg | character}}

过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。在上述例子中,capitalize 过滤器函数将会收到 message 的值作为第一个参数。

在 调用 过滤器 :  character    时,可以传参数

{{msg | character('兔子','可爱')}}

过滤器可多次使用

{{msg | character('兔子','可爱') | ceshi}}

 日期格式化:

将昨天小颖写的文章  学习Vue 入门到实战——学习笔记(二)  中的  ctime 格式化为‘yyyy’-'mm'-'dd'形式

过滤器为

Vue.filter('dateFormat', function (dateStr) {

var dt = new Date(dateStr),

y = dt.getFullYear(),

m = dt.getMonth() + 1,

d = dt.getDate();

// return y + '-' + m + '-' + d;

//模板字符串

if(m.toString().length<2){

m='0'+m;

}

if(d.toString().length<2){

d='0'+d;

}

return `${y}-${m}-${d}`;

});

强化

添加、删除、查询

IdNameCtimeoperation
{{item.id}}{{item.name}}{{item.ctime | dateFormat('')}}删除

私有

过滤器调用的时候采用就近原则,如果私有过滤器和全局过滤器名称一致,这时候优先调用私有过滤器。

示例:

添加、删除、查询

IdNameCtimeoperation
{{item.id}}{{item.name}}{{item.ctime | dateFormat}}删除

{{dt | dateFormat}}

 附带提下:ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

则过滤器代码可修改为:

Vue.filter('dateFormat', function (dateStr, pattern) {

var dt = new Date(dateStr),

y = dt.getFullYear(),

m = (dt.getMonth() + 1).toString().padStart(2, '0'),

d = dt.getDate().toString().padStart(2, '0');

// return y + '-' + m + '-' + d;

//模板字符串

// return `${y}-${m}-${d}`;

if (pattern && pattern.toLowerCase() == 'yyyy-mm-dd') {

return `${y}-${m}-${d}`;

} else {

var hh = dt.getHours().toString().padStart(2, '0'),

mm = dt.getMinutes().toString().padStart(2, '0'),

ss = dt.getSeconds().toString().padStart(2, '0');

return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;

}

});

2.Vue生命周期

什么是生命周期:

从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期。(Vue实例从创建到销毁的过程)

生命周期钩子:就是生命周期事件的别名而已。

生命周期钩子 = 生命周期函数 = 生命周期事件。

主要的生命周期函数分类:

      创建期间:

             beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性。

             created:实例已经在内存中创建ok,此时data 和 methods 已经创建ok,此时还没有开始编译模板。

             beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中。

             mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示。

      运行期间:

             beforeUpdate:状态更新之前执行此函数,此时 data 中的状态值是最新的,但是界面上显示的数据还是旧的,因为此时还没有开始重新渲染DOM节点。

             update:实例更新完毕之后调用此函数,此时data中的状态值和界面上显示的数据都已经完成了更新,界面已经被重新渲染好了。

      销毁期间:

             beforeDestroy:实例销毁之前调用,在这一步,实例仍然完全可用。

             destroyed:Vue实例销毁后调用,调用后Vue实例指示的所有东西都会被解除绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

图文助解

代码助解

公用代码:

{{msg}}

beforeCreate

beforeCreate(){//表示实例完全被创建出来之前,会执行它

console.log(this.msg);

this.show();

//注意:在beforeCreate生命周期函数执行的时候,data和methods中的数据还没有初始化

}

created

created() {

console.log(this.msg);

this.show();

// 在create中,data和methods已经初始化好了

// 如果要调用methods中的方法或操作data中的数据,最早只能在crate中操作。

}

beforeMount

beforeMount() {//模板已经在内存中编译好,但尚未把模板渲染到页面中

console.log(document.getElementById('testP').innerText);

//在beforeMount执行时,页面中的元素还没有真正被替换过来,只是之前写的模板字符串({{msg}})

}

mounted

mounted(){//表示内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了。

console.log(document.getElementById('testP').innerText);

//注意:mounted是实例创建期间的最后一个生命周期函数了,当执行完mounted就表示,实例已经被完全创建好了,此时如果

// 没有其他操作的话,这个实例就静静的躺在我们内存中,一动不动。

}

beforeUpdate

beforeUpdate() {//这时候页面数据没有更新,但是data中的数据已经更新了

console.log('界面上的元素内容:' + document.getElementById('testP').innerText);

console.log('data中的msg数据是:' + this.msg);

//得出结论:当执行beforeUpdate时,界面中显示的数据还是旧的,此时data数据是最新的,,页面数据尚未和最新的数据同步。

}

点击按钮后:

update

updated(){

console.log('界面上的元素内容:' + document.getElementById('testP').innerText);

console.log('data中的msg数据是:' + this.msg);

// update事件执行的时候,页面和data数据已经保持同步了,都是最新的数据

}


推荐阅读
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 【Vue基础】监听属性watch
    Vue监听属性是watch,我们可以通过watch来响应数据的变化。代码示例: ... [详细]
  • #ReactivityFundamentals#DeclaringReactiveState ... [详细]
  • vue.js如何实现数据的双向绑定呢?与angular不同。vue利用的是es5的defineproperty特性。1.一个小例子 ... [详细]
  • Vue的组件化
    文章目录Vue的组件化一、认识组件化1.什么是组件化2.组件化思想二、注册组件1.组件的使用步骤三、组件其他补充1.全局组件和局部组件2.父组件和子组件3.组件的语法糖写法4.组件 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 025_JavaScript数组方法
    1.把数组转换为字符串1.1.toString()方法1.1.1.toString()方法把数组转换为数组值(逗号分隔)的字符串,并返回结果。1.1.2.语法arrayOb ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
  • <!DOCTYPEhtml><htmllang=en><head><metacharset=UT ... [详细]
  • Vue.Js_Vue之vue.js声明式渲染
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Vue之vue.js声明式渲染相关的知识,希望对你有一定的参考价值。ht ... [详细]
  • 方便不想看完全篇文章的童鞋,简单总结一下,这是篇软广,主要是推广自己在业务中沉淀的一个开源组件vue-dynamic-form-component。基于element-ui实现的v ... [详细]
author-avatar
淑娇姿荣石文
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有