DenoでNodeモジュールを使用するにはどうすればよいですか?

青灯夜游
リリース: 2020-09-02 10:17:16
転載
2393 人が閲覧しました

DenoでNodeモジュールを使用するにはどうすればよいですか?

方法はあまり良くありませんが、やむを得ない場合もあります。

Deno は、Web テクノロジーに基づいたサーバー側のコード実行環境です。

  • Node は JavaScript と commonjs モジュールを使用し、パッケージ マネージャーとして npm/yarn を使用します。 [ビデオチュートリアルの推奨: node js チュートリアル]
  • Deno は、Typescript または JavaScript に加えて、最新の JavaScript import ステートメントを使用します。パッケージマネージャーは必要ありません。

deno にモジュールをインポートしたい場合は、URL を通じて参照する必要があります:

import { serve } from "https://deno.land/std/http/server.ts";
ログイン後にコピー

これは Deno 標準ライブラリ にあります。または Deno サードパーティ モジュール リスト でさらに必要なモジュールを見つけることができますが、必要なすべてをカバーしているわけではありません。 npm エコシステムに依存するモジュールのみを使用できる場合があります。以下に、最も便利な方法から最も面倒な方法までいくつかの方法を示します:

1. モジュールが ES モジュールのインポート/エクスポート構文を使用する場合。

deno で使用するライブラリは、推奨される Deno パッケージから取得する必要はありません。import 構文を使用する限り、任意の URL から取得できます。 npm リポジトリ内からこれらのファイルに直接アクセスするには、unpkg を使用するのが良い方法です。

import throttle from https://unpkg.com/lodash@4.17.19/throttle.js
ログイン後にコピー

2. モジュール自体はインポートを使用しないが、ソース コードはインポートを使用する場合

npm でコンパイルされたモジュールである場合、または間違った形式のモジュールが使用されている場合、ソースコードを使用するには、ある程度の運が必要になる場合があります。多くの人気のあるライブラリのソース コードは、標準準拠の ES モジュールの import 構文に準拠するために commonjs から移行されました。

一部のソフトウェア パッケージには、個別の src/ および dist/ ディレクトリがあり、ES モジュール スタイルのコードは src/ にありますが、npm にはありません。パッケージには含まれておりません。この場合、ソースから直接インポートできます。

import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js";
ログイン後にコピー

github の「raw」ボタンをクリックしてこの URL を取得し、元の JS ファイルを取得します。 github cdn を使用するか、github ページ経由でファイルにアクセスできるかどうかを確認する方が簡単ですが実行可能です。

特記事項: 一部のライブラリは、Webpack で ES モジュールを使用するか、次のようにノード モジュールからインポートできるようにモジュール ローダーを使用します:

//不好的用法:
import { someFunction } from "modulename";
import { someOtherFunction } from "modulename/file.js";
ログイン後にコピー

標準import メソッドは、./ または適切に機能する URL で始まることです:

//标准的用法:
import { someOtherFunction } from "./folder/file.js";
ログイン後にコピー

ただし、次の方法を試すこともできます:

3. commonjs モジュールをインポートします。

幸いなことに、JSPM というサービスがあり、サードパーティのモジュールを解析し、ES モジュールのインポートとして使用する commonjs モジュールをコンパイルできます。このツールを使用すると、ビルド手順なしでブラウザーでノード モジュールを使用できます。しかし、ここでもそれを使うことができます。

最近のプロジェクトでは、VAPID の資格情報の生成を伴うプッシュ通知を実行したいと考えています。暗号化できる deno パスワード ライブラリがありますが、開発プロセス全体が困難です。むしろ、一般的なパスワード ライブラリを使用したいと考えています。 web -push ライブラリ。 JSPM CDN と次の URL を使用してインポートできます:

import webPush from "https://dev.jspm.io/web-push";
ログイン後にコピー

この方法で、他のモジュールと同様に deno で使用できます。

Typescript 型を適切に機能させる

deno で typecipt を使用する優れた機能は、モジュールに完璧なオートコンプリート機能を簡単に提供できることです。エディターの deno 拡張機能は、型定義がわかっていれば、サードパーティ モジュールをオートコンプリートすることもできます。

これはコードが適切に動作するために必要なわけではありませんが、コードを適切に保守するのに役立ちます。

fast-xml-parser という名前の別のモジュールをインポートしたときに、.d.ts で終わる型定義ファイルがあることに気付きました。これらのファイルはさまざまなインターフェイスを記述しており、JavaScript.js ファイルにも適用されます。場合によっては、@types\somemodule リポジトリでタイプ定義ファイルを見つけることもできます。

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

このファイル タイプ スクリプトは、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;
ログイン後にコピー

定義ファイルから型定義を FastXMLParser (大文字の F に注意) としてインポートしましたが、これには有効なコードが含まれていません。これは、インポートしているコードと同じタイプのオブジェクトです。

JSPM からコードを fastXMLParser (小文字の f) としてインポートしました。これは有効なコードですが、型がありません。

次に、これらを組み合わせて parser (タイプ FastXMLParserfastXMLParser) を作成します。

最後に、ぜひ試していただければ幸いですdeno。 Web 用の任意のモジュール、さらには node/npm 用のモジュールを使用できる Deno の機能は、実際に、この新しいサーバーサイド ライブラリ エコシステムの優れた基盤を築きました。

プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !

以上がDenoでNodeモジュールを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!