⛏️

JS,TSの実行環境について

2025/01/15に公開

はじめに

普段何気なく使用した Node についてあまり理解していないことに気づいた。
比較的簡単に環境が作れるため、意識することは少なかったが最近 Deno V2 がでたらしいので
これを機に JS,TS の実行環境について深く知ろうと思う。

実行環境

元々は、javascript を実行する環境はブラウザのみであった。
ブラウザ、例えば Chrome はv8という JS 実行エンジンが搭載されているため動く。
そこから、Node.js と言われるサーバーサイドでも実行ができる環境が開発された。
サーバーサイドの特徴として、ネットワークリクエストを処理できる、ファイルの読み書きが
できることがあげられるが、これらが Node.js の登場にのよって JS で可能になった。

Node

2009 年に登場。
一番メジャーな JS の実行環境。
TS も動かすことが可能。

Node.js は、サーバーサイドで JS を実行するために作成されたのではなく、
大量の同時接続をさばけるネットワークアプリケーションの構築を目的に設計されたらしい。
とは言っても、クライアントサイド JavaScript の開発環境としても使用される。
パッケージ管理ツールは、npm もしくは yarn。
サーバーサイドで JS を実行するだけでなくテストツールやバンドルツールなどの用途にも使用されている。

Deno

2018 年に登場。
Node.js の開発者が Node.js について後悔している点っをもとに開発したソフトウェア。
TypeScript の標準サポート:TypeScript がネイティブでサポートされており、設定なしで TypeScript ファイルを実行できる(自動トランスパイル)。
ビルトインツール: テストやフォーマットツールが組み込まれている。
モジュールシステム: ES モジュールが標準で、URL(GitHub のリポジトリや CDN からのモジュール)から直接モジュールをインポート可能。
バージョン管理については、URL に含めることでことで管理できる。
インポートしたモジュールは、ローカルにキャッシュする。
ただ、モジュールの一元管理するファイルが必要。

Bun

2021 年に登場。
パフォーマンス:Safari に搭載されている「JavaScriptCore」というエンジン使用しているため早い。
TypeScript サポート: TypeScript がネイティブでサポートされており、設定なしで TypeScript ファイルを実行できる。
モジュールとパッケージ管理: 独自のパッケージマネージャ(bun.pm)を持ち、簡単に依存関係を管理可能。モジュールシステムも利用可能。
ビルトインツール: テストやフォーマットツールが組み込まれている。
npm レジストリや Bun リポジトリからモジュールやパッケージを取得する。

まとめ

Node.js: 安定性と広範なライブラリを持ち、特にバックエンド開発に適している。
Deno: セキュリティと最新のモジュールシステムを重視し、現代的な開発環境を提供。
Bun: パフォーマンスを重視し、フロントエンド開発に特化した機能を提供。

引用

https://zenn.dev/mizchi/articles/3789a101dae388d98159
https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb
https://kinsta.com/jp/blog/deno-js/
https://deno.com/blog/v1.28
https://zenn.dev/ak/articles/c21609fd3b0fdc

GitHubで編集を提案

Discussion