对于
web
应用来说,实现动画的方式有很多。在CSS3
的动画效果已经非常强大的前提下,我们一般是不推荐使用JS
来实现动画效果的,一是因为JS
动画通常性能上都非常不乐观,二是写起来也十分麻烦,而且不易维护。但在某些场景下,当
CSS3
动画不能满足需求时,我们就不得不借助于JS
来实现了。在以前我们一般使用setTimeout
通过定时来控制元素的位置,角度,透明度,显隐等属性实现动画的过渡效果。今天要介绍的主角
requestAnimationFrame
,通过名字也可以看出,它与动画有关(废话!!要不我上面扯半天动画干嘛)。那么requestAnimationFrame
相比于setTimeout
又有哪些突出的优势呢?让我们通过这篇博客来一一解释。
RxJs系列(二):Observable和Observer
Observable
是RxJs
中的核心概念,也是RxJs
最为基础的构造类。我们通过将数据流封装为Observable
,来进一步处理事件流程和状态分发等行为。将值封装为
Observable
之后,我们就需要提供一个Observer
来对值形成的数据流进行订阅,从而对每个值进行处理。本篇博客,主要就
Observable
和Observer
这两个概念进行一个介绍。理解了
Observable
和Observer
,对RxJs
也就理解了一大部分,后续的深入学习也会更加的得心应手和轻松,所以我会尽可能详细的进行说明,同时也尽量保证文章的通俗易懂。对于文中涉及到的
RxJs
的其他概念,如果不明白也不要紧,先跳过去,后续博客我会再进行介绍。Ok,废话不多说。下面进入正题。
RxJs系列(一):概述
异步编程作为代码世界中一个绕不开的话题,其与人类直观的同步思维相违背的代码执行顺序再加上复杂的状态管理,异常处理,控制权交接,数据传递,条件判断,事件循环等等,经常让初入其中的程序员头昏脑涨,拐不过弯,屡屡翻车。
对
Js
来说,因为处在浏览器这个特殊语言环境和其单用户线程的特性,异步编程更是随处可见,在Js
中具有举足轻重的地位。更别说在以异步无阻塞著称的nodeJS
中,更是大部分的API
都是异步的。异步编程的场景越来越复杂,异步处理的机制也越来越抽象。从最早的回调函数,到类似
jQuery
的event-emmiter
事件广播,再到ES6
中的迭代器和Promise
,再到Es7
中的async/await
函数,我们对js
中异步的处理工具也日益丰富。今天要介绍的rxjs
,也是用来处理js
的异步编程问题的。不过,相比上面的那些异步处理机制,rxjs
的适用场景更广,也更抽象,对使用者对异步问题的归纳和梳理能力,要求也更高,当然,学习曲线也是相当陡峭。不过话又说回来,只要认真努力坚持不懈,我还没见过有什么技术是啃不下来的。今天看不懂就明天再看一遍,明天看不懂就大后天再看一遍(中间要休息一天,劳逸结合撒….),总是会大彻大悟之类的。
好啦,不闲扯了,进入正题。
《代码整洁之道》读书笔记(上)
刚进入无二的时候,就被强烈推荐过这本《代码整洁之道》,一直想着去看去看,也终于是没看。前几天又被老大提起这事,想着也是该看一看,就趁一些段段续续的零散时间看完了这本广受美誉的书。
看完掩卷,也的确觉得这本书非常不错,虽然书里面示例代码都是用
Java
写的,也有一些内容是单纯关于Java
的,但有些内容,不管是什么编程语言,是前端还是后端,看完都会有一些感悟和收获。毕竟,不管什么语言,保持代码的高度精炼和整洁,都是非常有必要性。或者可以更严格的说,整洁的代码不一定是好代码,但好代码一定是整洁的。
这篇博客,是我在阅读的过程中,个人总结和记录的一些比较值得思考和遵循的一些内容,也算做是读书笔记吧。
使用 TypeScript 构建 Vue 项目
随着 TypeScript 的热度越来越高,Vue 官方提供的 TypeScript 支持也越来越多,Vue-CLI 3.0 更是直接提供了使用 TypeScript 来创建一个新工程的功能。
使用 Vue 进行开发也已经有半年的时间了,也非常怀念当时拿 TypeScript 写 Angular 的那种得心应手的舒畅,因此,在这个周末,花了一下午时间,将手头的一个 Vue 小 Demo 从 Js 修改成 Ts,打算看一下,Vue的 TypeScript 开发,到底靠谱不靠谱。
本篇博客,就来记录一下项目升级到 TypeScirpt 中的一些重点和遇到的坑吧。
关于Vue的一次技术分享
本篇博客,是我在公司内部的一次关于vue的技术分享中分享的内容,特意整理一下,放在博客中,做个记录。
算法学习(五):《算法图解》笔记(二)
算法学习(四):《算法图解》笔记(一)
前段时间一直在看《算法图解》,这本书图文并茂,深入浅出,还是比较易读的。在阅读的过程中,记了一些笔记,都是一些算法领域相关的比较基础的一些知识。
我总觉得,读一本书,要有一本书的收获这句话是比较贪婪的说法,抱着功利心去读书,反而不如平常心去读更有乐趣点。但对于技术类的书来说,这句话我觉得还是比较贴切的(废话,技术书里面又没有那么多跌宕。
关于读书笔记这件事,我并不会照着抄一些书里加粗黑体的概念来充数,主要是记录一些我对书中内容的理解。
内心OS:其实我知道上面说这么一堆并没有什么用。因为并不会有人看我的博客。我日。
JavaScript数组和对象的遍历
遍历数组和对象是我们经常遇到的编程场景,
JS
有多种不同的方式和方法来遍历数组和对象,但每种方法深究起来又有各种差异,再加上对象的继承属性,不可枚举属性,Symbol
属性等等,如果不熟悉这些方法的话,可能会造成隐藏较深的 bug。因此,本篇博客就对有关数组和对象的各种遍历方法,做一个总结。
ES6之Async/Await
在前面的两篇博客中,我们介绍了ES6 的
promise
和generator
,它们都是用来解决 js中的异步操作问题的。本篇博客的主角,async
函数,同样是用于解决异步回调问题,它甚至被称为异步操作的终极解决方案。使用它,我们可以像处理简单的同步操作一样来处理一些异步操作,彻底告别回调函数方式的回调地狱问题,promise
方法绵长的then
调用问题,generator
函数需要引入 co 库等这些异步处理方案中恼人的不完美之处。准确的来说,
async
函数其实是 ES7 中的新语言特性,但babel已经完全提供了它的转码,所以在可以使用 ES6的地方,我们都可以大胆的使用async
函数。为了图个方便,就将此篇博客无伤大雅的放在 ES6 系列中,所以特此说明。
好了,下面就来具体介绍以下我们今天的主角吧。