In diesem Artikel geht es um responsive Formulare in Angular und es werden Methoden zur globalen Registrierung responsiver Formularmodule, zum Hinzufügen grundlegender Formularsteuerelemente und zum Gruppieren von Formularsteuerelementen vorgestellt.
Responsive Forms
Angular bietet zwei verschiedene Möglichkeiten, Benutzereingaben über Formulare zu verarbeiten: Responsive Forms
und Template-Driven Forms
. [Empfohlene verwandte Tutorials: „Angular-Tutorial"]响应式表单
和模板驱动表单
。【相关教程推荐:《angular教程》】
- 响应式表单:提供对底层表单对象模型直接、显式的访问。它们与模板驱动表单相比,更加健壮。如果表单是你的应用程序的关键部分,或者你已经在使用响应式表单来构建应用,那就使用响应式表单。
- 模板驱动表单:依赖模板中的指令来创建和操作底层的对象模型。它们对于向应用添加一个简单的表单非常有用,比如电子邮件列表注册表单。
这里只介绍响应式表单,模板驱动表单请参考官网—https://angular.cn/guide/forms-overview#setup-in-template-driven-forms
全局注册响应式表单模块 ReactiveFormsModule
要使用响应式表单控件,就要从 @angular/forms
包中导入 ReactiveFormsModule
,并把它添加到你的 NgModule
的imports
数组中。如下:app.module.ts
/***** app.module.ts *****/ import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ imports: [ // other imports ... ReactiveFormsModule ], }) export class AppModule { }
添加基础表单控件 FormControl
使用表单控件有三个步骤。
在你的应用中注册响应式表单模块。该模块声明了一些你要用在响应式表单中的指令。
生成一个新的
FormControl
实例,并把它保存在组件中。在模板中注册这个
FormControl
。
要注册一个表单控件,就要导入FormControl
类并创建一个 FormControl
的新实例,将其保存为类的属性。如下:test.component.ts
/***** test.component.ts *****/ import { Component } from '@angular/core'; import { FormControl } from '@angular/forms'; @Component({ selector: 'app-name-editor', templateUrl: './name-editor.component.html', styleUrls: ['./name-editor.component.css'] }) export class TestComponent { // 可以在 FormControl 的构造函数设置初始值,这个例子中它是空字符串 name = new FormControl(''); }
然后在模板中注册该控件,如下:test.component.html
<!-- test.component.html --> <label> Name: <input type="text" [formControl]="name"> </label> <!-- input 中输入的值变化的话,这里显示的值也会跟着变化 --> <p>name: {{ name.value }}</p>
FormControl
的其它属性和方法,参阅 API 参考手册:https://angular.cn/api/forms/FormControl#formcontrol
把表单控件分组 FormGroup
就像FormControl
的实例能让你控制单个输入框所对应的控件一样,FormGroup
的实例也能跟踪一组 FormControl
实例(比如一个表单)的表单状态。当创建 FormGroup
时,其中的每个控件都会根据其名字进行跟踪。
看下例演示:test.component.ts
、test.component.html
import { Component } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms' @Component({ selector: 'app-test', templateUrl: './test.component.html', styleUrls: ['./test.component.css'] }) export class TestComponent implements OnInit { constructor() {} profileForm = new FormGroup({ firstName: new FormControl('', [Validators.required,Validators.pattern('[a-zA-Z0-9]*')]), lastName: new FormControl('', Validators.required), }); onSubmit() { // 查看控件组各字段的值 console.log(this.profileForm.value) } }
<!-- profileForm 这个 FormGroup 通过 FormGroup 指令绑定到了 form 元素,在该模型和表单中的输入框之间创建了一个通讯层 --> <!-- FormGroup 指令还会监听 form 元素发出的 submit 事件,并发出一个 ngSubmit 事件,让你可以绑定一个回调函数。 --> <form [formGroup]="profileForm" (ngSubmit)="onSubmit()"> <label> <!-- 由 FormControlName 指令把每个输入框和 FormGroup 中定义的表单控件 FormControl 绑定起来。这些表单控件会和相应的元素通讯 --> First Name: <input type="text" formControlName="firstName"> </label> <label> Last Name: <input type="text" formControlName="lastName"> </label> <button type="submit" [disabled]="!profileForm.valid">Submit</button> </form> <p>{{ profileForm.value }}</p> <!-- 控件组的状态: INVALID 或 VALID --> <p>{{ profileForm.status }}</p> <!-- 控件组输入的值是否为有效值: true 或 false--> <p>{{ profileForm.valid }}</p> <!-- 是否禁用: true 或 false--> <p>{{ profileForm.disabled }}</p>
FormGroup
的其它属性和方法,参阅 API 参考手册:https://angular.cn/api/forms/FormGroup#formgroup
使用更简单的 FormBuilder 服务生成控件实例
在响应式表单中,当需要与多个表单打交道时,手动创建多个表单控件实例会非常繁琐。FormBuilder
服务提供了一些便捷方法来生成表单控件。FormBuilder
在幕后也使用同样的方式来创建和返回这些实例,只是用起来更简单。
FormBuilder
是一个可注入的服务提供者,它是由 ReactiveFormModule
提供的。只要把它添加到组件的构造函数中就可以注入这个依赖。
FormBuilder
服务有三个方法:control()
、group()
和array()
。这些方法都是工厂方法,用于在组件类中分别生成FormControl
、FormGroup
和FormArray
。
看下例演示:test.component.ts
import { Component } from '@angular/core'; // 1、导入 FormBuilder import { FormBuilder, Validators } from '@angular/forms'; @Component({ selector: 'app-test', templateUrl: './test.component.html', styleUrls: ['./test.component.css'] }) export class TestComponent { // 2、注入 FormBuilder 服务 constructor(private fb: FormBuilder) { } ngOnInit() { } profileForm = this.fb.group({ firstName: ['', [Validators.required, Validators.pattern('[a-zA-Z0-9]*')]], lastName: ['', Validators.required], }); // 相当于 // profileForm = new FormGroup({ // firstName: new FormControl('', [Validators.required,Validators.pattern('[a-zA-Z0-9]*')]), // lastName: new FormControl('', Validators.required), // }); onSubmit() { console.log(this.profileForm.value) console.log(this.profileForm) } }
对比可以发现,使用FormBuilder
服务可以更方便地生成FormControl
、FormGroup
和 FormArray
,而不必每次都手动new
一个新的实例出来。
表单验证器 Validators
Validators
类验证器的完整API列表,参考API手册:https://angular.cn/api/forms/Validators
验证器(Validators
- Reaktive Formulare: Bieten direkten, expliziten Zugriff auf das zugrunde liegende Formularobjektmodell. Sie sind robuster als vorlagengesteuerte Formulare. Wenn Formulare ein wichtiger Bestandteil Ihrer App sind oder Sie Ihre App bereits mit reaktiven Formularen erstellen, verwenden Sie reaktive Formulare.
- Vorlagengesteuerte Formulare: Verlassen Sie sich auf Anweisungen in Vorlagen, um das zugrunde liegende Objektmodell zu erstellen und zu betreiben. Sie sind nützlich, um Ihrer App ein einfaches Formular hinzuzufügen, beispielsweise ein Anmeldeformular für eine E-Mail-Liste.
Hier werden nur responsive Formulare vorgestellt. Informationen zu vorlagengesteuerten Formularen finden Sie auf der offiziellen Website – https://angular.cn/guide/forms-overview#setup-in-. template-driven-forms🎜
🎜Registrieren Sie das responsive Formularmodul ReactiveFormsModule global🎜
🎜Um das responsive Formularsteuerelement zu verwenden, müssen SieReactiveFormsModule@angular importieren /forms
-Paket /code> und fügen Sie es dem imports
-Array Ihres NgModule
hinzu. Wie folgt: app.module.ts
🎜class Validators { static min(min: number): ValidatorFn // 允许输入的最小数值 static max(max: number): ValidatorFn // 最大数值 static required(control: AbstractControl): ValidationErrors | null // 是否必填 static requiredTrue(control: AbstractControl): ValidationErrors | null static email(control: AbstractControl): ValidationErrors | null // 是否为邮箱格式 static minLength(minLength: number): ValidatorFn // 最小长度 static maxLength(maxLength: number): ValidatorFn // 最大长度 static pattern(pattern: string | RegExp): ValidatorFn // 正则匹配 static nullValidator(control: AbstractControl): ValidationErrors | null // 什么也不做 static compose(validators: ValidatorFn[]): ValidatorFn | null static composeAsync(validators: AsyncValidatorFn[]): AsyncValidatorFn | null }
🎜Grundlegendes Formularsteuerelement hinzufügen FormControl🎜
🎜Es gibt drei Schritte, um das Formularsteuerelement zu verwenden. 🎜- 🎜Registrieren Sie das responsive Formularmodul in Ihrer App. Dieses Modul deklariert einige Anweisungen, die Sie in reaktiven Formularen verwenden möchten. 🎜
- 🎜Generieren Sie eine neue
FormControl
-Instanz und speichern Sie sie in der Komponente. 🎜 - 🎜Registrieren Sie dieses
FormControl
in der Vorlage. 🎜
FormControl
, erstellen Sie eine neue Instanz von FormControl
und speichern Sie sie als Eigenschaft der Klasse . Wie folgt: test.component.ts
🎜import { Validators } from '@angular/forms'; ... ngOnInit(): void { this.heroForm = new FormGroup({ // 实例化 FormControl 控件 name: new FormControl(this.hero.name, [ Validators.required, // 验证,必填 Validators.minLength(4), // 长度不小于4 forbiddenNameValidator(/bob/i) // 自定义验证器 ]), alterEgo: new FormControl(this.hero.alterEgo), power: new FormControl(this.hero.power, Validators.required) }); } get name() { return this.heroForm.get('name'); } get power() { return this.heroForm.get('power'); }🎜Dann registrieren Sie das Steuerelement wie folgt in der Vorlage:
test.component.html
🎜import { Validators } from '@angular/forms'; ... ngOnInit(): void { this.heroForm = new FormGroup({ name: new FormControl(this.hero.name, [ Validators.required, Validators.minLength(4), // 1、添加自定义验证器 forbiddenNameValidator(/bob/i) ]) }); } // 2、实现自定义验证器,功能为禁止输入带有 bob 字符串的值 export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const forbidden = nameRe.test(control.value); // 3、在值有效时返回 null,或无效时返回验证错误对象 return forbidden ? {forbiddenName: {value: control.value}} : null; }; }
🎜FormControl
Weitere Eigenschaften und Methoden finden Sie im API-Referenzhandbuch: 🎜🎜https://angular.cn/api/forms/FormControl#formcontrol🎜
🎜Formularsteuerelemente in FormGroup gruppieren🎜
🎜So wie Sie mit einer Instanz vonFormControl
das Steuerelement steuern können, das einem einzelnen Eingabefeld entspricht, kann eine Instanz von FormGroup
auch eine Gruppe von FormControl
Instanzen (z. B. ein Formular) bilden den Status. Wenn eine FormGroup
erstellt wird, wird jedes darin enthaltene Steuerelement anhand seines Namens verfolgt. 🎜🎜Sehen Sie sich die folgende Beispieldemonstration an: test.component.ts
, test.component.html
🎜// 1、导入相关类 import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms'; import { Input } from '@angular/core' @Directive({ selector: '[appForbiddenName]', // 2、注册成为 NG_VALIDATORS 令牌的提供者 providers: [{provide: NG_VALIDATORS, useExisting: ForbiddenValidatorDirective, multi: true}] }) export class ForbiddenValidatorDirective implements Validator { @Input('appForbiddenName') forbiddenName = ''; // 3、实现 validator 接口,即实现 validate 函数 validate(control: AbstractControl): ValidationErrors | null { // 在值有效时返回 null,或无效时返回验证错误对象 return this.forbiddenName ? forbiddenNameValidator(new RegExp(this.forbiddenName, 'i'))(control) : null; } } // 4、自定义验证函数 export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const forbidden = nameRe.test(control.value); // 3、在值有效时返回 null,或无效时返回验证错误对象 return forbidden ? {forbiddenName: {value: control.value}} : null; }; }
<input type="text" required appForbiddenName="bob" [(ngModel)]="hero.name">
🎜FormGroup
's Weitere Attribute und Methoden finden Sie im API-Referenzhandbuch: 🎜🎜https://angular.cn/api/forms/FormGroup#formgroup🎜
🎜Verwenden Sie den einfacheren FormBuilder-Dienst, um Kontrollinstanzen zu generieren🎜
🎜Als Antwort: Wenn Sie in einem Formularsteuerelement mehrere Formulare bearbeiten müssen, ist es sehr mühsam, manuell mehrere Formularsteuerelementinstanzen zu erstellen. DerFormBuilder
-Dienst bietet einige praktische Methoden zum Generieren von Formularsteuerelementen. FormBuilder
erstellt und gibt diese Instanzen im Hintergrund auf die gleiche Weise zurück, ist jedoch einfacher zu verwenden. 🎜🎜FormBuilder
ist ein injizierbarer Dienstanbieter, der von ReactiveFormModule
bereitgestellt wird. Diese Abhängigkeit kann durch einfaches Hinzufügen zum Konstruktor der Komponente eingefügt werden. 🎜🎜🎜Sehen Sie sich die folgende Beispieldemonstration an:FormBuilder
-Dienst verfügt über drei Methoden:control()
,group()
undarray()
. Diese Methoden sind Factory-Methoden, die zum Generieren vonFormControl
,FormGroup
bzw.FormArray
in der Komponentenklasse verwendet werden. 🎜
test.component.ts
🎜rrreee🎜Vergleichen Sie, dass mit dem FormBuilder
-Dienst FormControl, <code>FormGroup
und FormArray
, ohne jedes Mal manuell new
eine neue Instanz erstellen zu müssen. 🎜🎜🎜Formularvalidatoren🎜🎜🎜Validatoren
Eine vollständige API-Liste der Klassenvalidatoren finden Sie im API-Handbuch: 🎜🎜https://angular.cn/api/forms/Validators🎜
🎜Die Validatorfunktion (Validators
) kann eine synchrone Funktion oder eine asynchrone Funktion sein. 🎜- 同步验证器:这些同步函数接受一个控件实例,然后返回一组验证错误或 null。你可以在实例化一个
FormControl
时把它作为构造函数的第二个参数传进去。 - 异步验证器 :这些异步函数接受一个控件实例并返回一个
Promise
或Observable
,它稍后会发出一组验证错误或 null。在实例化FormControl
时,可以把它们作为第三个参数传入。
出于性能方面的考虑,只有在所有同步验证器都通过之后,Angular 才会运行异步验证器。当每一个异步验证器都执行完之后,才会设置这些验证错误。
验证器Validators类的API
https://angular.cn/api/forms/Validators
class Validators { static min(min: number): ValidatorFn // 允许输入的最小数值 static max(max: number): ValidatorFn // 最大数值 static required(control: AbstractControl): ValidationErrors | null // 是否必填 static requiredTrue(control: AbstractControl): ValidationErrors | null static email(control: AbstractControl): ValidationErrors | null // 是否为邮箱格式 static minLength(minLength: number): ValidatorFn // 最小长度 static maxLength(maxLength: number): ValidatorFn // 最大长度 static pattern(pattern: string | RegExp): ValidatorFn // 正则匹配 static nullValidator(control: AbstractControl): ValidationErrors | null // 什么也不做 static compose(validators: ValidatorFn[]): ValidatorFn | null static composeAsync(validators: AsyncValidatorFn[]): AsyncValidatorFn | null }
内置验证器函数
要使用内置验证器,可以在实例化FormControl
控件的时候添加
import { Validators } from '@angular/forms'; ... ngOnInit(): void { this.heroForm = new FormGroup({ // 实例化 FormControl 控件 name: new FormControl(this.hero.name, [ Validators.required, // 验证,必填 Validators.minLength(4), // 长度不小于4 forbiddenNameValidator(/bob/i) // 自定义验证器 ]), alterEgo: new FormControl(this.hero.alterEgo), power: new FormControl(this.hero.power, Validators.required) }); } get name() { return this.heroForm.get('name'); } get power() { return this.heroForm.get('power'); }
自定义验证器
自定义验证器的内容请参考 API手册:
https://angular.cn/guide/form-validation
有时候内置的验证器并不能很好的满足需求,比如,我们需要对一个表单进行验证,要求输入的值只能为某一个数组中的值,而这个数组中的值是随程序运行实时改变的,这个时候内置的验证器就无法满足这个需求,需要创建自定义验证器。
-
在响应式表单中添加自定义验证器。在上面内置验证器一节中有一个
forbiddenNameValidator
函数如下:import { Validators } from '@angular/forms'; ... ngOnInit(): void { this.heroForm = new FormGroup({ name: new FormControl(this.hero.name, [ Validators.required, Validators.minLength(4), // 1、添加自定义验证器 forbiddenNameValidator(/bob/i) ]) }); } // 2、实现自定义验证器,功能为禁止输入带有 bob 字符串的值 export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const forbidden = nameRe.test(control.value); // 3、在值有效时返回 null,或无效时返回验证错误对象 return forbidden ? {forbiddenName: {value: control.value}} : null; }; }
验证器在值有效时返回
null
,或无效时返回验证错误对象
。 验证错误对象通常有一个名为验证秘钥(forbiddenName
)的属性。其值为一个任意词典,你可以用来插入错误信息({name})。 -
在模板驱动表单中添加自定义验证器。要为模板添加一个指令,该指令包含了
validator
函数。同时,该指令需要把自己注册成为NG_VALIDATORS
的提供者。如下所示:// 1、导入相关类 import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms'; import { Input } from '@angular/core' @Directive({ selector: '[appForbiddenName]', // 2、注册成为 NG_VALIDATORS 令牌的提供者 providers: [{provide: NG_VALIDATORS, useExisting: ForbiddenValidatorDirective, multi: true}] }) export class ForbiddenValidatorDirective implements Validator { @Input('appForbiddenName') forbiddenName = ''; // 3、实现 validator 接口,即实现 validate 函数 validate(control: AbstractControl): ValidationErrors | null { // 在值有效时返回 null,或无效时返回验证错误对象 return this.forbiddenName ? forbiddenNameValidator(new RegExp(this.forbiddenName, 'i'))(control) : null; } } // 4、自定义验证函数 export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const forbidden = nameRe.test(control.value); // 3、在值有效时返回 null,或无效时返回验证错误对象 return forbidden ? {forbiddenName: {value: control.value}} : null; }; }
注意,自定义验证指令是用
useExisting
而不是useClass
来实例化的。如果用useClass
来代替useExisting
,就会注册一个新的类实例,而它是没有forbiddenName
的。<input type="text" required appForbiddenName="bob" [(ngModel)]="hero.name">
更多编程相关知识,请访问:编程视频!!
Das obige ist der detaillierte Inhalt vonEin Artikel über responsive Formen in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

Ja, der Motorkern von JavaScript ist in C. 1) Die C -Sprache bietet eine effiziente Leistung und die zugrunde liegende Steuerung, die für die Entwicklung der JavaScript -Engine geeignet ist. 2) Die V8-Engine als Beispiel wird sein Kern in C geschrieben, wobei die Effizienz und objektorientierte Eigenschaften von C kombiniert werden.

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools
