热门标签 | 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数据已经保持同步了,都是最新的数据

}


推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Vue 开发技巧:实现数据过滤与排序功能详解
    Vue 开发技巧:实现数据过滤与排序功能详解 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 在最近的学习过程中,我对Vue.js中的Prop属性有了更深入的理解,并认为这一知识点至关重要,因此在此记录一些心得体会。Prop属性用于在组件之间传递数据。由于每个组件实例的作用域都是独立的,无法直接引用父组件的数据。通过使用Prop,可以将数据从父组件安全地传递到子组件,确保数据的隔离性和可维护性。 ... [详细]
  • 在使用 jQuery 的 `html()` 方法时,我发现了一个奇怪的现象:该方法无法完整地插入指定的字符串内容。具体来说,当尝试插入较长或包含特殊字符的字符串时,部分内容可能会被截断或丢失。这一问题可能与 jQuery 对字符串的处理方式有关,建议在实际应用中进行充分测试以确保数据完整性。 ... [详细]
  • 本文详细介绍了在编写jQuery插件时需要注意的关键要点,包括模块化支持、命名规范和性能优化等内容,旨在帮助开发者提高插件的质量和可维护性。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 利用REM实现移动端布局的高效适配技巧
    在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文深入解析了 jQuery 中用于扩展功能的三个关键方法:`$.extend()`、`$.fn` 和 `$.fn.extend()`。其中,`$.extend()` 用于扩展 jQuery 对象本身,而 `$.fn.extend()` 则用于扩展 jQuery 的原型对象,使自定义方法能够作为 jQuery 实例的方法使用。通过这些方法,开发者可以轻松地创建和集成自定义插件,增强 jQuery 的功能。文章详细介绍了每个方法的用法、参数及实际应用场景,帮助读者更好地理解和运用这些强大的工具。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
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社区 版权所有