Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie verwende ich das Node-Modul in Deno?

青灯夜游
Freigeben: 2020-09-02 10:17:16
nach vorne
2427 Leute haben es durchsucht

Wie verwende ich das Node-Modul in Deno?

Obwohl die Methode nicht sehr gut ist, gibt es manchmal keine Wahl.

Deno ist eine serverseitige Codeausführungsumgebung basierend auf Webtechnologie.

  • Node verwendet JavaScript- und CommonJS-Module und verwendet npm/yarn als Paketmanager. [Video-Tutorial-Empfehlung: node js-Tutorial ]
  • Deno verwendet Typescript oder JavaScript sowie moderne Javascript-Importanweisungen. Es ist kein Paketmanager erforderlich.

Wenn Sie Module in Deno importieren möchten, sollten Sie über die URL darauf verweisen:

import { serve } from "https://deno.land/std/http/server.ts";
Nach dem Login kopieren

Weitere benötigte Module finden Sie in der Deno-Standardbibliothek oder der Deno-Drittanbieter-Modulliste, aber sie können Ihren Anforderungen nicht gerecht werden braucht Alles was benötigt wird. Manchmal können Sie nur Module verwenden, die auf dem NPM-Ökosystem basieren. Hier sind einige Methoden, von den bequemsten bis zu den umständlichsten:

1. Wenn das Modul die Import-/Exportsyntax des ES-Moduls verwendet.

Die Bibliotheken, die Sie in Deno verwenden, müssen nicht aus den empfohlenen Deno-Paketen stammen, sie können von jeder URL stammen, solange sie die import-Syntax verwenden. Eine gute Möglichkeit, direkt aus dem npm-Repository auf diese Dateien zuzugreifen, ist unpkg. import 语法即可。通过 unpkg 直接从 npm 存储库内部访问这些文件不失为一个好方法。

import throttle from https://unpkg.com/lodash@4.17.19/throttle.js
Nach dem Login kopieren

2. 如果模块本身没有使用 imports,但源代码用到了

如果是通过 npm 编译的模块,或使用了错误格式的模块,那么是否使用其源代码可能需要一些运气。许多流行库的源代码已经从 commonjs 迁移到了符合标准的 ES 模块的 import 语法。

一些软件包有单独的 src/dist/ 目录,其中 ES 模块风格的代码位于 src/ 中,但 npm 中并未将其包含在软件包中。在这种情况下,你可以直接从源进行导入。

import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js";
Nach dem Login kopieren

可以通过单击 github 上的 “raw” 按钮得到这个 URL,进而获取原始的 JS 文件。使用 github cdn 或查看文件是否可以通过 github 页面进行访问,这样更直接,但却是可行的。

特别注意: 一些库将 ES 模块与 webpack 一起使用,或者使用模块加载器,使它们可以从 Node 模块中导入,如下所示:

//不好的用法:
import { someFunction } from "modulename";
import { someOtherFunction } from "modulename/file.js";
Nach dem Login kopieren

标准的导入方法是,要以 ./ 开头或者是一个可以正常工作的 URL:

//标准的用法:
import { someOtherFunction } from "./folder/file.js";
Nach dem Login kopieren

不过你也可以尝试下一种方法:

3. 导入 commonjs 模块

幸运的是,有一个名为 JSPM 的服务,它能够解析第三方模块并对 commonjs 模块进行编译来用作 ES 模块导入。该工具可用于在浏览器中使用 Node 模块,而无需构建步骤。但是我们也可以在这里用到它。

在我最近的项目中,想进行推送通知,其中涉及生成 VAPID 的凭据,有一个可以加密的 deno 密码库,但是整个开发过程很困难,我宁愿使用流行的 web-push 库。可以用 JSPM CDN 和如下 URL 进行导入:

import webPush from "https://dev.jspm.io/web-push";
Nach dem Login kopieren

这样可以在 deno 中向像使用其他任何模块一样去使用它。

使 Typescript 类型能够正常工作

在 deno 中使用 typecipt 有一个不错的功能,就是很容易能够为模块提供了非常完美的自动补全功能。如果编辑器的 deno 扩展知道类型定义,它甚至可以自动补全第三方模块。

尽管这对代码是否能够正常工作不是必要的,但是可以帮你很好的维护代码。

在我导入另一个名为 fast-xml-parser 的模块时,我注意到它有一个类型定义文件是以 .d.ts 结尾的。这些文件描述了各种接口,甚至适用于 JavaScript.js 文件。有时你还可以在 @typessomemodule 存储库中找到类型定义文件。

例如:https://github.com/Definitely...

通过这个文件 typescript 可以自动完成从 JavaScript 文件导入的内容。即使对于用 JSPM 导入的文件也是如此:

// 导入 fast-xml-parser 库
import fastXMLParser from "https://dev.jspm.io/fast-xml-parser";
// 从 fast-xml-parser 的源代码导入类型定义文件
import * as FastXMLParser from "https://raw.githubusercontent.com/NaturalIntelligence/fast-xml-parser/master/src/parser.d.ts";
//将 parser 与以下类型一起使用
const parser = fastXMLParser as typeof FastXMLParser;
Nach dem Login kopieren

我从定义文件中将类型定义导入为 FastXMLParserrrreee

2. Wenn das Modul selbst keine Importe verwendet, der Quellcode jedoch 🎜Wenn es sich um ein über npm kompiliertes Modul handelt oder ein Modul mit dem falschen Format verwendet wird, dann ob der Quellcode verwendet werden soll Es kann etwas Glück erfordern. Der Quellcode vieler beliebter Bibliotheken wurde von commonjs auf die standardkonforme import-Syntax von ES-Modulen migriert. 🎜🎜Einige Softwarepakete verfügen über separate Verzeichnisse src/ und dist/, wobei sich der ES-Modulstilcode in src/, aber in npm befindet Es ist nicht im Paket enthalten. In diesem Fall können Sie direkt aus der Quelle importieren. 🎜rrreee🎜Sie können diese URL erhalten, indem Sie auf Github auf die Schaltfläche „Raw“ klicken, um die ursprüngliche JS-Datei zu erhalten. Verwenden Sie github cdn🎜 oder prüfen Sie, ob die Datei über die Github-Seite zugänglich ist, was aber direkter ist machbar. 🎜🎜Besonderer Hinweis: Einige Bibliotheken verwenden ES-Module mit Webpack oder verwenden einen Modullader, um sie aus Node-Modulen importierbar zu machen, wie folgt: 🎜rrreee🎜Die Standard-Importmethode lautet: Beginnen Sie mit ./ oder eine funktionierende URL: 🎜rrreee🎜Sie können aber auch die nächste Methode ausprobieren: 🎜

3. Zum Glück gibt es einen Dienst namens JSPM🎜, das Module von Drittanbietern und CommonJS analysieren kann. Module werden für die Verwendung als ES-Modulimporte kompiliert. Mit diesem Tool können Node-Module ohne Build-Schritt im Browser verwendet werden. Aber wir können es auch hier nutzen. 🎜🎜In meinem aktuellen Projekt möchte ich Push-Benachrichtigungen erstellen, bei denen Anmeldeinformationen für VAPID generiert werden. Es gibt eine Deno-Passwortbibliothek, die verschlüsselt werden kann, aber der gesamte Entwicklungsprozess ist schwierig „https://www.npmjs.com/package/web-push“ rel="nofollow noreferrer" target="_blank">web-push🎜 Bibliothek. Sie können es mit JSPM CDN und der folgenden URL importieren: 🎜rrreee🎜Auf diese Weise können Sie es wie jedes andere Modul in Deno verwenden. 🎜

Ermöglichen Sie Typescript-Typen, damit sie ordnungsgemäß funktionieren🎜🎜Eine nette Funktion bei der Verwendung von Typecipt in Deno ist, dass es problemlos eine perfekte Autovervollständigungsfunktion für Module bereitstellen kann. Die Deno-Erweiterung des Editors kann sogar Module von Drittanbietern automatisch vervollständigen, wenn sie die Typdefinition kennt. 🎜🎜Obwohl dies nicht notwendig ist, damit der Code ordnungsgemäß funktioniert, kann es Ihnen helfen, den Code gut zu pflegen. 🎜🎜Nachdem ich ein weiteres Modul mit dem Namen fast-xml-parser🎜 importiert habe , ist mir aufgefallen, dass es eine Typdefinitionsdatei mit der Endung .d.ts gibt. Diese Dateien beschreiben verschiedene Schnittstellen und gelten sogar für JavaScript.js-Dateien. Manchmal finden Sie Typdefinitionsdateien auch im @typessomemodule-Repository. 🎜🎜Zum Beispiel: https://github.com/Definitely. .🎜🎜🎜Dieses Datei-Typoskript kann den aus JavaScript-Dateien importierten Inhalt automatisch vervollständigen. Dies gilt sogar für mit JSPM importierte Dateien: 🎜rrreee🎜 Ich habe die Typdefinition als FastXMLParser aus der Definitionsdatei importiert (beachten Sie das große F) und sie enthielt keinen gültigen Code, aber dieser An Objekt vom gleichen Typ wie der Code, den wir importieren möchten. 🎜

Ich habe den Code aus JSPM als fastXMLParser (Kleinbuchstabe f) importiert, was gültiger Code ist, aber keinen Typ hat. fastXMLParser(小写字母 f),这是有效的代码,但没有类型。

接下来,把它们组合在一起来创建 parser,即 FastXMLParser 类型的 fastXMLParser

Als nächstes kombinieren Sie sie, um einen Parser zu erstellen, der ein fastXMLParser vom Typ FastXMLParser ist.

Abschließend hoffe ich, dass Sie es ausprobieren könnendeno

. Die Fähigkeit von Deno, jedes Modul für das Web oder sogar für Node/NPM zu verwenden, hat in der Tat eine gute Grundlage für dieses neue serverseitige Bibliotheksökosystem gelegt.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierlehre
! !

🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich das Node-Modul in Deno?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage