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:)などのをインストールしてくれます(一度インストールしたモジュールは、ローカルにキャッシュされます) code:typescript
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ドキュメントを参照できます
開発環境
本
その他
ソース
参考