Ausgehend von der Typbeurteilung In JavaScript ist die Überprüfung von Variablentypen sehr mühsam. Wenn Sie einfach Hier sind einige einfache: console.log(Typ von null) // 'Objekt' console.log(Typ des neuen Arrays) // 'Objekt' console.log(Typ des neuen Strings) // 'Objekt' Später entdeckten alle, dass const getTypeString = obj => Object.prototype.toString.call(obj) getTypeString(null) // '[Objekt Null]' getTypeString('string') //'[Objekt String]' getTypeString(neuer String) //'[Objekt String]' Durch Proxying const getTypeString = obj => { gibt Object.prototype.toString.call(obj) zurück } const istTyp = Typ => { return obj => { return getTypeString(obj) === `[Objekt ${Typ}]` } } const isArray = isType('Array') // Diese Methode wird grundsätzlich durch Array.isArray ersetzt const isNull = isType('Null') const isObject = isType('Objekt') const isRegExp = isType('RegExp') const isFunction = isType('Funktion') const isAsyncFunction = isType('AsyncFunction') isNull(null) // wahr isObject({}) // wahr isRegExp(/\w/) // wahr istFunktion(() => {}) // wahr istAsyncFunktion(async () => {}) // wahr Aber in Node.js gibt es tatsächlich eine Reihe von APIs zum Bestimmen von Variablentypen. Und es verfügt über äußerst umfangreiche Funktionen. Neben der Beurteilung grundlegender Typen unterstützt es auch die Beurteilung von Promise-Objekten, Date-Objekten und verschiedenen ArrayBuffern. const-Typen = erfordern('util/Typen') Typen.isDate(neues Datum) // wahr Typen.isPromise(neues Promise(() => {})) // wahr Typen.isArrayBuffer(neuer ArrayBuffer(16)) // wahr Strikte Gleichheit Wenn in JavaScript die Gleichheit von Objekten, Arrays und anderen Variablen beurteilt wird und const util = erfordern('util') const val1 = { name: 'shenfq' } const val2 = { name: 'shenfq' } console.log('val1 === val2', val1 === val2) // falsch console.log('isDeepStrictEqual', util.isDeepStrictEqual(Wert1, Wert2)) // wahr Mit dieser Methode lässt sich auch ermitteln, ob Arrays strikt gleich sind: const util = erfordern('util') const arr1 = [1, 3, 5] const arr2 = [1, 3, 5] console.log('arr1 === arr2', arr1 === arr2) // falsch console.log('isDeepStrictEqual', util.isDeepStrictEqual(arr1, arr2)) // wahr Fehler zuerst und Versprechen Frühe Node-APIs waren alle // Hier ist ein Beispiel für das Lesen einer Datei const fs = require('fs') fs.readFile('nginx.log', (Fehler, Daten) => { if (Fehler) { // Fehler beim Lesen der Datei console.error(error) zurückkehren } // Datei erfolgreich gelesen, Ergebnis ausdrucken console.log(data) }) Als Node 8 veröffentlicht wurde, wurde eine neue const fs = erfordern('fs') const util = erfordern('util') const readFile = util.promisify(fs.readFile) Datei lesen('./2021-11-11.log', { Kodierung: 'utf-8' }) .then(text => konsole.log(text)) .catch(Fehler => Konsole.Fehler(Fehler)) Viele Leute waren jedoch später der Meinung, dass die Art und Weise, wie diese nativen APIs Promise unterstützen, zu umständlich ist und jede API mit einer separaten const fs = require('fs').versprechen fs.readFile('./2021-11-11.log', { Kodierung: 'utf-8' }) .then(text => konsole.log(text)) .catch(Fehler => Konsole.Fehler(Fehler)) Hinweis: Nach Knoten 14 wird eine neue Möglichkeit zum Importieren const fs = erfordern('fs/versprechen') fs.readFile('./2021-11-11.log', { Kodierung: 'utf-8' }) .then(text => konsole.log(text)) .catch(Fehler => Konsole.Fehler(Fehler)) Zusätzlich zur Konvertierung Als Nächstes wird const fs = erfordern('fs/versprechen') const util = erfordern('util') const readFile = util.callbackify(fs.readFile) readFile('./2021-11-12.log', { Kodierung: 'utf-8' }, (Fehler, Text) => { if (Fehler) { Konsole.Fehler(Fehler) zurückkehren } console.log(text) }) Debuggen und Ausgabe Wenn Sie einen Node-Dienst entwickelt haben, sollten Sie das const debug = erfordern('debug') const log = debug('App') const Benutzer = { Name: 'shenfq' } log('Aktueller Benutzer: %o', Benutzer) Tatsächlich kann ein ähnlicher Effekt durch const debug = erfordern('debug') const log = debug('App') const Benutzer = { Name: 'shenfq' } log('Aktueller Benutzer: %o', Benutzer) Ersetzen Sie beim Start einfach die Umgebungsvariable Wenn Sie sich den obigen Code genau ansehen, werden Sie feststellen, dass in der Zeichenfolge vor const { format } = erfordern('util'). konsole.log( format('Aktueller Benutzer: %o', { Name: 'shenfq', Alter: 25 }) ) Zusätzlich zum Platzhalter
Objekte in JavaScript sind sehr komplex. Neben der direkten Verwendung von const { inspizieren } = erfordern('util') const Benutzer = { Alter: 25, Name: 'shenfq', arbeiten: Name: 'Kodierung', Dienstalter: 5 } } console.log(inspect(Benutzer)) Es scheint, dass Natürlich ist das oben genannte nur ein Teil der Konfiguration. Eine detailliertere Konfiguration finden Sie in der Knotendokumentation. Nachfolgend schreiben wir ein paar Beispiele: Alle Eigenschaften werden mit Zeilenumbrüchen angezeigt: inspizieren(Benutzer, { kompakt: falsch }) Formatieren Sie nur den Wert der ersten Ebene eines Objekts: inspizieren(Benutzer, { Tiefe: 0, kompakt: falsch }) Ausgabe in umgekehrter Reihenfolge entsprechend der Schlüsselwertkodierung: inspizieren(Benutzer, { kompakt: falsch, sortiert: (a, b) => a < b ? 1 : -1 }) Oben finden Sie den detaillierten Inhalt des Tutorial-Beispiels des Util-Moduls in node.js. Weitere Informationen zum Util-Modul in node.js finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Grundlegende Verwendung von Unterabfragen in MySQL
Vorsichtsmaßnahmen 1) Interpreter am Anfang hinzu...
In diesem Artikel werden die spezifischen Schritt...
1. Rasterlayout (Raster): Es unterteilt die Webse...
Hinzufügen einer Netzwerkschnittstelle zum Contai...
Heute habe ich festgestellt, dass ein Programm ei...
1. Klären Sie die Designrichtung <br />Zuers...
1. Mehrere Grenzen[1] Hintergrund: Box-Shadow, Um...
Serialisierungsimplementierung InnoDB implementie...
Inhaltsverzeichnis Versteckte Probleme Lösung zur...
Wenn auf einer Seite mehrere Bilder eingefügt wer...
Das Folgende ist ein Balkendiagramm im Flex-Layou...
Inhaltsverzeichnis Web-Entwicklung 1. Überblick ü...
Code kopieren Der Code lautet wie folgt: <Körp...
Was ist das? Spring Boot ist ein Unterprojekt der...
1. Stellen Sie sicher, dass die Netzwerkverbindun...