Javascript 需要渲染器2吗?
我知道Angular使用Javascript 需要渲染器2吗?,javascript,angular,typescript,Javascript,Angular,Typescript,我知道Angular使用Renderer2类来操纵我们的视图。它是angular提供的一个抽象层,允许我们操作应用程序的元素,而不必自己直接接触DOM ElementRef也是一种操纵视图的方法,但我们现在不要使用它,它正与渲染器一起使用,以便像这样操纵DOM import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core'; @Directive({ selector: '[Randomd
Renderer2
类来操纵我们的视图。它是angular提供的一个抽象层,允许我们操作应用程序的元素,而不必自己直接接触DOM
ElementRef
也是一种操纵视图的方法,但我们现在不要使用它,它正与渲染器一起使用,以便像这样操纵DOM
import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';
@Directive({
selector: '[Randomdirective]'
})
export class Randomdirective{
constructor(private elRef: ElementRef, private renderer: Renderer2) {
}
@HostListener('click')
performTask() {
const li = this.renderer.createElement('li');
const text = this.renderer.createText('Click here to add li');
this.renderer.appendChild(li, text);
this.renderer.appendChild(this.elRef.nativeElement, li);
}
}
我从中看到使用渲染器是因为:
这种方法使开发应用程序变得更容易,这些应用程序可以在没有DOM访问权限的环境中呈现,例如在服务器、web worker或本机移动设备上
如果我不打算让我的应用程序在没有DOM访问权限的环境中运行,那么在Angular应用程序中直接操作DOM
是否仍然是一种“糟糕的做法”
如果是,为什么?(例如,安全性/性能原因?如果您不打算使用ssr,接触dom是唯一不好的做法,因为它不是角度的方式,有比appendchild更好、性能更好的方式,比如*ngFor。。虽然是的,angular也有一些卫生设施等。卫生设施如何?比如,它不允许您在不明确表示您通过调用domsanizer.trustAsX信任源的情况下设置innerHTML等。也不允许通过插值使用html。