-
RxJS入门和概览
RxJS 是Reactive Extensions For JavaScript的简写,它是一个强大的 JavaScript Reactive 编程库。Reactive 是指响应式编程(Reactive Programming)。什么是响应式编程(Reactive Programming)?任何异步事件(比如页面鼠标 click 事件),在响应式编程都是异步事件流。不仅仅是 click、hover 这种事件,任何变量、用户输入、属性、缓存、数据结构等,响应式编程把所有事物都看成是数据流。数...…
-
Angular:ngDoCheck执行时机
在 Angular官方文档 对ngDoCheck执行时机是这么描述的:Detect and act upon changes that Angular can't or won't detect on its own.Called during every change detection run, immediately after ngOnChanges() and ngOnInit().直译过来就是: 在状态发生变化,Angular 自己本身不能捕获这个变化时会触发NgDo...…
-
Angular Change Detection:变化检测策略
在【Angular Change Detection:变化检测机制】这篇文章里介绍了 Angular 的变化检测机制,也提到了异步事件都会触发整个 Angular 应用的变化检测。Angular 默认的变化检测机制是ChangeDetectionStrategy.Default:异步事件 callback 结束后,NgZone 会触发整个组件树至上而下做变化检测,如下所示:但是在实际应用里,并不是每个异步操作需要变化检测,某些组件也可以完全不用做变化检测,应用越大页面越复杂,过多的变化检测...…
-
Angular Change Detection:变化检测机制
Angular 中的变化检测机制是当 component 状态有变化的时候,Angular 都能检测到这些变化,并且能够将这些变化反应到页面上。比如有这样一个 component,代码如下:@Component({ template:`<h1>I am <span [textContent]="data.name"></span><h1>`})export class CDParentComponent { data : any = { ...…
-
Angular:单向数据流
在介绍 Angular 单向数据流之前我们先来看下 Angular 中 component 之间关系树状结构图:比如在 child A component 从 http response 拿到最新 model 的值,并且需要把变化后的值渲染到页面,这个过程会触发 child A component 的变化检测(change detection)。这个变化检测不仅仅会在 child A component 中执行,它会从 root component 开始沿着 component 关系树结构...…
-
Angular:生命周期和钩子函数
Angular 中每个 component/directive 都有它自己的生命周期。包括创建组件,渲染组件,创建渲染子组件,检测绑定属性变化,回收和从 DOM 中移除。生命周期有这几种:OnChanges,OnInit,DoCheck,AfterContentInit,AfterContentChecked,AfterViewInit,AfterViewChecked,OnDestroy。钩子函数就是在对应的生命周期前面加上前缀 ng,比如 OnInit,对应的钩子函数是 ngOnIni...…
-
在Win10里安装Ruby和Jekyll遇到的问题
问题描述之前在搭自己的github.io的时候,需要在Win10里把整个Jekyll的环境搭起来,按照官网的步骤(如图所示):ruby装成功以后,按照官网步骤跑命令行:gem install jekyll bundler, 会报如下错误:ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)ERROR: You must add /DC=com/DC=nextestate...…
-
JS:箭头函数
先来看下ES6中箭头函数的基本语法:let func = value => value;相当于:let func = function (value) { return value}如果需要传入多个参数:let func = (value, num) => value * num;上面箭头函数例子中都省略了return关键字和代码的花括号,在箭头函数中如果方法体中只有一行代码,可以省略关键字和方法体的花括号,直接简化成value => value。如果函数的代码块需...…
-
JS:回调函数 Promise Generator Async异步处理应用
JavaScript是单线程的,正是因为有异步处理,JS才不会卡顿,JS的异步处理方式有:回调函数 -> Promise -> Generator -> Async之前一直很困惑,为什么JS异步处理方式有这么多种,Promise能解决大部分实际开发工作中的异步处理。看完Generator和Async的具体用法之后,才恍然大悟,从回调函数到Promise到Generator再到Async,其实也是想让异步代码可读性要好一点,异步代码写得越来越像同步代码,这应该是异步处理的终...…
-
JS:模拟实现call apply和bind方法
首先来说下这三个的区别: call apply都是为了解决this的指向,默认第一参数是this的指向,剩下的参数是函数形参,call接收的形参是一个列表用逗号隔开,apply接收的是一个参数数组。 call apply改变函数的this指向以后立马执行该函数,而bind是返回一个绑定上下文的新函数,后续再执行。 bind函数返回的新函数不可以再通过apply call改变它的this指向。let a = { value: 1}function getValue(name, a...…