JavaScript 用の新しいランタイムを作成する主な目的の 8 つは、より安全な環境を提供することです。 セキュリティを向上させるために、VXNUMX エンジンは Rust で書かれており、フリー後のアクセス、null ポインタの逆参照、バッファ オーバーランなど、低レベルのメモリ操作から生じる多くの脆弱性を回避します。 プラットフォームは、ノンブロッキング モードでリクエストを処理するために使用されます。
メイン
- セキュリティ指向のデフォルト構成。 ファイル アクセス、ネットワーク、環境変数へのアクセスはデフォルトで無効になっているため、明示的に有効にする必要があります。
- JavaScript に加えて TypeScript 言語の組み込みサポート。
- ランタイムは、単一の自己完結型実行可能ファイル (「deno」) の形式で提供されます。 Denoを使用してアプリケーションを実行するにはこれで十分です
アップロードする そのプラットフォームの場合、サイズが約 10 MB の XNUMX つの実行可能ファイル。これには外部依存関係がなく、システムに特別なインストールを必要としません。 - プログラムの起動時やモジュールのロード時に、URL アドレス指定を使用できます。 たとえば、welcome.js プログラムを実行するには、「deno https://deno.land/std/examples/welcome.js」コマンドを使用できます。 外部リソースからのコードはダウンロードされ、ローカル システムにキャッシュされますが、自動的に更新されることはありません (更新するには、「--reload」フラグを指定してアプリケーションを明示的に実行する必要があります)。
- アプリケーションでの HTTP 経由のネットワーク リクエストの効率的な処理。プラットフォームは、高性能ネットワーク アプリケーションを作成するように設計されています。
- Deno と通常の Web ブラウザの両方で実行できるユニバーサル Web アプリケーションを作成する機能。
- ランタイムに加えて、Deno プラットフォームはパッケージ マネージャーとしても機能し、コード内の URL によってモジュールにアクセスできるようにします。 たとえば、モジュールをロードするには、コード内で「import * as log from “https://deno.land/std/log/mod.ts”」と指定できます。 URL 経由で外部サーバーからダウンロードされたファイルはキャッシュされます。 モジュールのバージョンへのバインドは、URL 内にバージョン番号を指定することによって決定されます (例: 「https://unpkg.com/」)。[メール保護]/dist/liltest.js";
- この構造には、統合された依存関係検査システム (「deno info」コマンド) とコード フォーマット用ユーティリティ (deno fmt) が含まれています。
- アプリケーション開発者向け
提案された 追加の監査と互換性テストを経た一連の標準モジュール。 - すべてのアプリケーション スクリプトを XNUMX つの JavaScript ファイルに結合できます。
Node.js との違い:
- Deno は npm パッケージ マネージャーを使用しません
リポジトリに関連付けられておらず、モジュールは URL またはファイル パスによってアドレス指定され、モジュール自体は任意の Web サイトに配置できます。 - Deno はモジュールの定義に「package.json」を使用しません。
- API の違いとして、Deno のすべての非同期アクションは Promise を返します。
- Deno では、ファイル、ネットワーク、環境変数に必要なすべての権限を明示的に定義する必要があります。
- ハンドラーが提供されていないエラーはすべて、アプリケーションの終了につながります。
- Deno は ECMAScript モジュール システムを使用しており、require() をサポートしていません。
出所: オープンネット.ru