Angular:为什么我应该使用 'encapsulation: ViewEncapsulation.Native' ?

标签 angular dom shadow-dom

在 Angular 中,默认模式是 封装:ViewEncapsulation.Emulated

此模式通过使用 CSS 选择器启用样式封装。然而,'encapsulation: ViewEncapsulation.Native' 也实现了样式封装,但使用了另一种技术,shadow DOM。虽然技术不同,但结果是一样的。

如果是这样,我为什么要使用“ViewEncapsulation.Native”?在“ViewEncapsulation.Emulated”中没有得到的这种模式下我得到了什么?

最佳答案

通过“原生”封装,您可以获得新的 Shadow DOM 规范提供的所有功能。

This blog article解释了 Angular2 中不同模式之间的差异。

因为 Emulated 模仿了 Native 模式,您将获得所有可以模拟的功能

无法模拟的是真正的 CSS 封装(带有 !important 指令的规则可以应用于您的模拟组件)和作用域选择(借助于querySelector()).

使用 native 模式,渲染应该更快(因为它是...... native !)。

关于Angular:为什么我应该使用 'encapsulation: ViewEncapsulation.Native' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016978/

相关文章:

javascript - 我正在使用 Angular 代码调用其余 api 并将其显示在屏幕上

css - 带有指令的angular js dom操作

javascript - 如何使用 Polymer/Web 组件为任意内容创建样式范围

javascript - 插入内联 HTML 或创建新元素更快吗?

css - Firefox 中的 polymer 核心子菜单样式?

javascript - 在 Android 4.4 Webview 中使用 shadow-dom (Polymer)

angular - 类型 'catchError' 上不存在属性 'Observable<HttpEvent<any>>'

angular - 检查后表达式发生了变化。先前值 : 'initial' . 当前值: 'visible'

Angular 2 架构 - 跨模块共享服务的地方

javascript - 有没有办法确保所有元素在再次操作之前都已重置到原始位置?