关于组件的概念,现在使用已经很广泛了,我们今天就来深入的了解一下 Web Components
与 Angular
当中的 Component
关于组件的概念,现在使用已经很广泛了,我们今天就来深入的了解一下 Web Components
与 Angular
当中的 Component
算是一些手写 API
,常用方法的一些汇总,反正就是面试可能涉及到的一些手写功能可能都会有所涉及,不仅仅只是为了面试所用,也算是在这里做下汇总记录,方便以后可以快速查询(可以直接参考左边目录)
今天在群里看到一个讨论,是关于 Angular
的变化检查机制,依稀记得在 AngularJS
当中是使用的脏检查机制,而在 Angular 2.x+
之后的版本当中依然采用的是脏检查机制,不过使用的是进行优化过的版本,为了探明到底有啥区别,就打算抽点时间,研究研究新版本的脏检查机制,顺便记录记录,就当加深点印象了
为保持区别,文中所提到的
Angular
均为2.x+
的版本,而AngularJS
则代表1.x+
的版本,不过本文当中的Angular
大部分相关内容还是以2.x+
版本为主
之前在探讨 Angular 中的 ExpressionChangedAfterItHasBeenCheckedError 这个错误的时候也涉及到了一些 Angular
的变化检查机制的内容,所以今天就一起来深入的研究一下 Angular
当中的变化检查机制
在展开渲染机制相关内容之前,我们先来简单的了解一下常见的浏览器内核有哪些,浏览器的内核是指支持浏览器运行的最核心的程序,分为两个部分的,一是渲染引擎,另一个是 JavaScript
引擎(比如我们经常可以听到的 V8
引擎),渲染引擎在不同的浏览器中也不是都相同的,目前市面上常见的浏览器内核主要有以下这些
浏览器/RunTime | 内核(渲染引擎) | JavaScript 引擎 |
---|---|---|
Chrome |
Blink(28~)Webkit(Chrome 27) |
V8 |
FireFox |
Gecko |
SpiderMonkey |
Safari |
Webkit |
JavaScriptCore |
Edge |
EdgeHTML |
Chakra(for JavaScript) |
IE |
Trident |
Chakra(for JScript) |
PhantomJS |
Webkit |
JavaScriptCore |
Node.js |
- | V8 |
这里面大家最耳熟能详的可能就是 Webkit
内核了,其中的 Blink
其实就是 Webkit
的一个分支,也就是说它也是基于 Webkit
的,所以本章也就以 Webkit
为例,来看看浏览器的渲染机制到底是一个什么样的过程,不过在此之前,我们先来简单的了解一下浏览器的主要组成部分和它包含的一些主要进程,这有助于我们下面更好的理解浏览器当中的渲染机制
本文主要借助 libuv
来简单的了解一下 Node.js
中的事件轮询机制相关概念,注意与浏览器中的 EventLoop
区分开来,下面我们就先来看看什么是 libuv
关于浏览器中的
EventLoop
详细可见 JavaScript 并发模型
当我们在 Angular
中给属性绑定一个变量的时候,主要有下面三种绑定方式
[property] = "variable"
property = ""
[attr.property] = "xxx"
下面我们就看看它们之间的区别
Update your browser to view this website correctly. Update my browser now