Heim >Web-Frontend >js-Tutorial >Deno -Module: Nutzung, Best Practices und Knotenmodulimporte
in das Deno -Modul eingraben - Wenn Sie von node.js stammen, ist dies die größte Workflow -Änderung, die Sie begegnen. Erfahren Sie, wie sie funktionieren und wie Sie sie am besten verwenden, wie Sie Node.js -Module und NPM -Pakete in Deno und mehr verwenden.
node.js ist eine JavaScript -Laufzeit, die auf Chrome V8 -Engine basiert, die von Ryan Dahl entwickelt und 2009 veröffentlicht wurden.
Deno ist auch eine JavaScript -Laufzeit, die auf Chrome V8 -Engine basiert, die von Ryan Dahl entwickelt und im Jahr 2020 veröffentlicht wurden. Es wird basierend auf einem Jahrzehnt Erfahrung erstellt. Dies bedeutet nicht unbedingt, dass es sich um eine Fortsetzung von Node.js oder einer fortgeschritteneren Alternative handelt, aber es weicht vom Pfad von Node.js ab.
Siehe auch:
Hauptunterschiede: Deno unterstützt nativ Typscript-, Sicherheits-, Test- und Browser -APIs. Die Modulverarbeitung hat weniger Beachtung erhalten, kann jedoch die größte Veränderung in der Art und Weise sein, wie JavaScript -Anwendungen erstellt werden. Bevor Sie über Deno sprechen, lassen Sie mich Sie zurück in eine einfachere Ära bringen ...
2009 hatte JavaScript kein Standardmodulsystem. Ein Teil davon ist der Hintergrund des Browsers, und es wird mehrere Jahre dauern, bis ES6/ES2015 erscheint.
node.js ist unvorstellbar, wenn es keine Module bereitstellt, weshalb es CommonJs aus mehreren Problemumgehungen in der Gemeinde übernimmt. Dies hat zur Entwicklung des Node Paket Manager (NPM) geführt, mit dem Entwickler ihre eigenen JavaScript -Module problemlos suchen, verwenden und veröffentlichen können.
Die Verwendung vonNPM hat exponentiell zugenommen. Es ist zum beliebtesten Paketmanager aller Zeiten geworden, und bis Mitte 2020 wurden fast 1,5 Millionen Module mit mehr als 800 Neuzugang pro Tag veranstaltet (Quelle: ModuleCounts.com).
Deno wählen Sie die ES2015 -Module aus, die Sie aus absoluten oder relativen URLs importieren können:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Das Skript in dieser URL muss die Funktion oder andere Werte entsprechend exportieren, z. B.
<code>export function something() { console.log('something was executed'); } </code>
Deno verwendet das gleiche Modulsystem wie in modernen Webbrowsern.
node.js unterstützt auch ES2015 -Module ... aber das ist kompliziert und immer noch experimentell. CommonJS und ES2015 -Module sehen ähnlich aus, arbeiten jedoch anders:
node.js muss weiterhin CommonJs unterstützen und gemischte ES -Module verarbeiten. Daher wird angenommen:
Kein Paketmanager.
Eine Kritik an NPM ist die große Skala des Node_Modules -Verzeichnisses für jedes Projekt. Da ein Modul eine bestimmte Version anderer Module benötigt, kann es Hunderte von Megabyten in Größe erreichen.
Ich weiß, dass Sie denken: "Ah, aber wenn ..."
… aber Deno hat die Möglichkeit, das von der Modul -URL aufgeworfene Problem zu lösen.
unzuverlässige URL
Für kritische node.js -Anwendungen wird empfohlen, Ihr Verzeichnis node_modules zum git/anderen Repository Ihres Projekts hinzuzufügen.
Deno unterstützt ähnliche Optionen. Sie können die Umgebungsvariable der Deno_dir im aktuellen Projekt auf den Verzeichnispfad einstellen, zum Beispiel:
<code>DENO_DIR=~/myproject/deno_modules` </code>
verwendet in Windows CMD:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>oder Windows PowerShell:
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>Wenn Ihre Anwendung ausgeführt wird, richtungssetzt die Module die Module in dieses Verzeichnis, damit sie zum Quell -Steuerrepository des Projekts hinzugefügt werden können.
Sie können auch in Betracht ziehen, Abhängigkeiten in eine einzelne JavaScript- oder Typscript -Datei zu bündeln. Der Befehl Deno Bundle kann dies in einem Schritt tun:
<code>deno bundle myscript.js myscript.bundle.js</code>wobei myScript.js ein Eintragskript ist, das normalerweise mit Deno -Lauf ausgeführt wird. Die generierte eigenständige Datei myScript.bundle.js kann an einem Echtzeitserver bereitgestellt werden.
Bundle mit oben erwarten
Deno unterstützt auf Top-Level-Wartezeit: Sie müssen nicht auf den Aufruf in einer anonymen asynchronisierten Funktion warten. Leider ist die oberste Ebene im Bündel fehlgeschlagen, sodass die Wrapper-Funktion hinzugefügt werden muss. Dies ist ein bekanntes Problem und wird in einer zukünftigen Veröffentlichung behoben.
Zuletzt: Vorsicht vor zufälligen Deno -Modulen auf ungewöhnlichen URLs! Deno-, Github- oder Bitbucket -URLs mit guten Dokumentation und Eingabe der Community sind im Allgemeinen sicherer.
Im Idealfall sollte die Modul -URL versioniert werden, damit Sie eine bestimmte Codeversion verweisen können. Mit der Deno -Standardbibliothek können Sie beispielsweise bestimmte Versionen von HTTP -Servermodulen laden:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Sie können sich auch auf den Master -Zweig beziehen:
<code>export function something() { console.log('something was executed'); } </code>
Aber dies wird die neueste Version herunterladen, und zukünftige Versionen können mit Ihrer Anwendung unvereinbar sein.
Sie können ähnliche Versionskontrventionen für Versionen verwenden, um Deno -Module auf Ihren eigenen Servern zu veröffentlichen, aber da sie populärer wird, erhalten Ihre Website möglicherweise viel Verkehr. Eine zuverlässigere Möglichkeit besteht darin, ein Repository von Diensten wie GitHub zu verwenden und jeder Version ein Git -Tag zuzuweisen. Dienste wie Denopkg.com und UNPKG.com können zur Bereitstellung von URLs mit öffentlich versionierten Modul verwendet werden.
Sie müssen möglicherweise auf die gleiche Modul -URL in vielen Dateien in der Anwendungscode -Basis verweisen. Wenn Sie das Modul aktualisieren möchten, müssen Sie die URL an mehreren Stellen ändern. Suche und Ersetzen können funktionieren, aber es ist ungeschickt, fehleranfällig und erhöht die Wahrscheinlichkeit von Zusammenführungskonflikten.
Alternativ können Sie eine einzige Abhängigkeitsdatei verwenden, die jedes im Projekt verwendete Modul importiert. Es heißt normalerweise DEPS.JS oder DEPS.TS:
<code>DENO_DIR=~/myproject/deno_modules` </code>
Sie können dann auf das Deno -Modul aus DEPS.js in jeder anderen Projektdatei verweisen:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>
Wenn das Modul aktualisiert wird, müssen Sie nur die einzelne URL -Referenz in DEPS.Js.
Eine andere Option besteht darin, die Karte zu importieren. Dies handelt
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>Sie können den Namen des Kartens importieren in jedem Skript verweisen:
<code>deno bundle myscript.js myscript.bundle.js</code>Importieren Sie bei der Ausführung der Anwendung mit Deno die JSON -Datei:
<code>import { serve } from 'https://deno.land/std@0.61.0/http/server.ts'; </code>Importkarten sind derzeit eine instabile Funktion, sodass das Onestable -Flag erforderlich ist. Diese Funktion kann sich in zukünftigen Deno -Versionen ändern.
Integrität der Untersuchung
Deno verfügt über integrierte Sicherheit, sodass Skripte mit Flags wie-Allow-Read und -Allow-Net ausgeführt werden müssen, um das Dateisystem und den Netzwerkzugriff zu begrenzen. Dies wird dazu beitragen, einige Probleme zu vermeiden, aber dies ist kein Ersatz für die Überprüfung der Modulintegrität!Deno bietet eine Integritätsprüfungsoption. Wenn Sie eine einzelne Abhängigkeitsdatei verwenden (wie oben erwähnt), ist sie am einfachsten:
<code>import { serve } from 'https://deno.land/std/http/server.ts'; </code>Der folgende Deno -Befehl generiert eine lock.json -Datei mit der Prüfsumme aller importierten Deno -Module:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Wenn ein anderer Entwickler Ihr Projekt kloniert, kann sie jedes Modul neu laden und die Integrität jedes Moduls überprüfen, um sicherzustellen, dass sie mit Ihrem Modul übereinstimmen:
<code>export function something() { console.log('something was executed'); } </code>
Deno erzwingt keine Integritätsprüfungen. Es ist am besten, diese Prozesse als automatisierte Git -Hooks oder ähnliche Vorgänge auszuführen.
Viele Node.js -APIs wurden für Deno kopiert - siehe Deno.land/std/node. Dies ist keine vollständige Liste, aber Sie finden gemeinsame Dateien, Ereignisse, Puffer und Versorgungsmodule.
Die Sammlung von fast 800 Deno-Modulen von Drittanbietern wird unter
deno.land/x bereitgestellt. Es gibt Frameworks ähnlich wie Express.js, Datenbanktreiber, Verschlüsselungsfunktionen, Befehlszeilen -Tools usw.Sie finden auch eine ausgewählte Liste der beliebten Module wie Awesome Deno.
Sie können jedoch möglicherweise einen der 1,5 Millionen Node.js -Module importieren. Mehrere CDNs können NPM/CommonJS -Pakete in ES2015 -Modul -URLs konvertieren, einschließlich:
Zum Glück können plattformübergreifende Module, die auf Node.js und Deno ohne besondere Verarbeitung ausgeführt werden, als JavaScript-Laufzeit-Ökosystem entstehen.
Mehr Modulfragen
Aber das ist alles andere als perfekt.
Es ist einfach, NPM -Module zu veröffentlichen, und es ist auch einfach, nach NPMJs.com zu suchen. Ihre Suchbegriffe können 500 Ergebnisse zurückgeben. Durch die Rangliste von Paketen nach Beliebtheit, Qualität und Wartungsfaktoren können Sie die Auswahllähmung minimieren.ist schwierig, den Code in eine Liste von Modulen von Drittanbietern in Deno zu senden. Module müssen automatisierte Tests bestehen, aber die Qualität kann nicht garantiert werden, und die Suchergebnisse sind alphabetisch angeordnet. Sobald die Anzahl der Module ein paar tausend erreicht, dürften vorhandene Systeme nicht dauern.
Es ist auch einfach, Pakete in NPM zu aktualisieren. Sie können NPM veraltet ausführen, um die Aktualisierungsliste anzuzeigen, oder einfach die NPM -Installation ausführen, wenn Sie auf eine lockere Versionsnummer in package.json verweisen.
Es gibt keine äquivalente Update -Check -Option in Deno. Es gibt Paket-ähnliche Projekte, einschließlich Trex, Update-Begrenzungsabhängigkeiten und Deno-Check-Updates. Diese Projekte beruhen jedoch normalerweise auf Importkarten und stützen sich immer auf semantische Versions-URLs.
Sollten Sie zu Deno wechseln?
Deno nutzt den größten Teil dieses Wissens, ist aber sehr neu und wird sich in den kommenden Jahren schnell entwickeln. Für große Anwendungen kann es zu früh sein, aber für kleine Projekte ist das Risiko geringer. Diejenigen, die TypeScript oder in anderen Sprachen bereits verwenden, haben möglicherweise eine viel leichtere Erfahrung, aber Node.js -Entwickler haben keine Schwierigkeiten, in deno zu konvertieren und dann zurück zu konvertieren.
Deno hat jedoch einen interessanten Vorteil:
Der Traum von isomorphen JavaScript -Bibliotheken, die entweder auf Client oder Server arbeiten, ist ein großer Schritt weiter.
Erfahren Sie schnell über Deno. Unsere Sammlung von Deno -Grundlagen hilft Ihnen dabei, den ersten Schritt in die Deno -Welt und darüber hinaus zu machen, und wir fügen ihm immer wieder Inhalte hinzu. Wir werden Ihnen die Tutorials zur Verfügung stellen, die Sie benötigen, um ein Profi zu werden. Sie können den Index am Ende unseres Deno -Erste -Start -Handbuchs jederzeit aktualisieren:
➤ Deno -Grundlagen
Was ist ein Deno -Modul? Das Deno -Modul ist eine Codeeinheit in Deno, eine sichere Laufzeit für JavaScript und TypeScript. Module in Deno ähneln den CommonJS -Modulen in Node.js- und ES6 -Modulen in modernen JavaScript. Sie ermöglichen Entwicklern, Code zu organisieren und zu teilen, indem sie ihn in wiederverwendbare und verkapselte Blöcke zerlegen.
Wie erstelle ich Module in Deno? Das Erstellen von Modulen in Deno ist einfach. Sie können eine neue Datei erstellen (z. B. modul.ts), Ihre Funktionen oder Klassen definieren und sie dann mit dem Schlüsselwort für Exportieren exportieren. Andere Deno -Skripte können diese Module importieren und verwenden.
Wie importiere ich Module in Deno? Um ein Modul in Deno zu importieren, können Sie das Schlüsselwort importieren, gefolgt vom Pfad oder der URL des Moduls. Deno unterstützt lokale und entfernte Importe.
Kann ich Module von Drittanbietern in Deno verwenden? Ja, Deno unterstützt das Importmodulen direkt von URLs aus, sodass Sie Module von Drittanbietern verwenden können, die in Paketregistrierung oder GitHub-Repository gehostet werden.
Das obige ist der detaillierte Inhalt vonDeno -Module: Nutzung, Best Practices und Knotenmodulimporte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!