Denoとは
Denoとは
Denoの特徴
Rustで記述されている
また、ネイティブ拡張もRustで記述することができます(Pluginと呼びます) PluginシステムはDeno v1.13.0で廃止され、代わりにFFIが導入されました
tscが内部に組み込まれており、型チェックも行えます
パーミッションシステム
Denoはパーミッションシステムを採用しており、権限を与えない限り、デフォルトでは以下のような処理は実行できません
ディスクIO( --allow-read
/ --allow-write
)
ネットワークIO( --allow-net
)
外部プロセスの実行( --allow-run
)
環境変数の参照( --allow-env
)
モジュールシステム
DenoはES Modulesを標準のモジュール形式としてサポートしています
デフォルトではCommon JS形式のモジュールは読み込めません (ただし、 npm:
経由でなら読み込めます)
パッケージ管理
Denoにはnpmやyarnのようなパッケージマネージャは存在しません スクリプトを実行する際に、
Denoが自動的にサードパーティモジュール(
npm/
jsr/
https:
)などのをインストールしてくれます(一度インストールしたモジュールは、ローカルにキャッシュされます)
typescriptimport { parse } from "https://deno.land/std@0.68.0/encoding/csv.ts"; // このファイルを実行する際に、自動でインストールされます
console.log(await parse("a,b,c\n1,2,3"));
ブラウザ(Web標準)との互換性
Denoはブラウザ(Web標準)との互換性を意識しています。
ある機能を実現する上でWeb APIが活用できる場合は、極力Web APIをベースに機能が提供されます
現時点では、以下のような機能が提供されています
標準モジュールが豊富
deno_stdはGoの標準モジュールに大きな影響を受けており、※以下のような様々な機能が提供されています
std/testing
- アサーション等
std/encoding/yaml
- YAML
std/encoding/toml
- TOML
std/encoding/csv
- CSV
std/io
- IO
std/http
- HTTPサーバ
std/flags
- コマンドライン引数の解析
等...
※
deno_stdは初期の頃は
Goの影響をかなり受けていたものの、現在はどちらかというとWebやDenoのAPIをベースにした機能などが多くを占めます
生産性を重視
Denoでは生産性が重視されており、以下のような機能が処理系に最初から組み込まれています
リソースリークの検知
カバレッジの取得
ただし、Deno v1.5にてツリーシェイキング等に対応するなど、徐々に高機能化しつつあります
最新のJavaScript仕様に準拠
denoに関する情報
Deno公式のモジュールレジストリ
各モジュールのAPIドキュメントを参照できます
開発環境
本
その他
ソース
参考