Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要渲染器2吗?_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 需要渲染器2吗?

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

我知道Angular使用
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。