Angular 2用什么来更新DOM ?是Shadow DOM还是Virtual DOM ?Angular 1中有这样的概念吗?
update
Shadow DOM现在直接支持。
原来Angular2不使用影子DOM(默认),也不使用虚拟DOM。
对于encapsulation: ViewEncapsulation.Emulated
(默认),没有影子DOM,因为样式封装只是模拟的。
encapsulation: ViewEncapsulation.Native
在浏览器上启用shadow DOM,或者在加载webcomponents polyfill时再次模拟。
Shadow DOM也不像虚拟DOM那样以性能为目标,而是以样式封装为目标。
Angular2根本不使用虚拟DOM。
Angular2有变更检测功能,可以检测模型的变更,并且只根据模型的变更更新DOM中需要更改的部分。
有关更多详细信息,请参见Shadow DOM在React.js中是否像Virtual DOM一样快?
React和Vue使用Virtual DOM,而Angular使用直接DOM渲染系统。
和Angular在版本1中做的是一样的。X,但它是优化的,有一个惊喜给你:)
使用JavaScript对象比使用DOM要快得多,因为屏幕上没有任何内容
Angular 2和之后的版本没有使用Virtual DOM,而是使用变更检测机制来检测任何更改并对其采取行动,而React和Vue使用Virtual DOM与真实DOM进行比较来检测发生的任何更改。
另一方面,在某种程度上,Angular确实在封装中使用Shadow DOM来隐藏标记结构、样式和行为,并将其与页面上的其他代码或组件分开,这样不同的部分就不会发生冲突。您可以在这里了解更多关于封装的信息。 在Angular 1或AngularJS中,没有Virtual DOM和Shadow DOM的概念。