2か月前に投稿してそのまま放置してました。
まあUbuntuやらなんやらで遊んでただけですがね
さて本題に戻って、今回はDenoってなに?って人向けに簡単に説明を書きます。
Denoとは
Node.jsの作者のライアン・ダールがJSConf EU 2018での公演「Node.jsに関する10の反省点」で発表されたJavascirpt・Typescirptのランタイムです。
インストール方法
Windowsは
irm https://deno.land/install.ps1 | iex
Mac・Linuxは
curl -fsSL https://deno.land/install.sh | sh
のコマンドを実行するとインストールされます。
実際に使ってみよう
自分が使っているDenoのバージョンはv1.41.0です。
なのでバージョンが上がるにつれ動かなくなる可能性があります。
まずDenoを実行してみましょう。
deno run --allow-net --allow-read https://deno.land/std@0.217.0/http/file_server.ts
とすると(多分)localhost:4507にアクセスするとファイルサーバーにアクセスできるようになります。
次は自分でTypescriptのコードを書いて実行してみましょう。
Deno.serve((_request: Request) => {
return new Response("Hello, world!");
});
と書いて、
deno run --allow-net index.ts
で実行してやるとlocalhost:8000にアクセスするとHello, world!と表示されるはずです。
Node.jsとDenoの違い
1.Denoはpackage.jsonやらなんやらがない
Node.jsにはpackage.jsonでごにょごにょしたりnode_moduleが必要ですがDenoにはなんとありません。
なぜならDenoにはパッケージ管理システムが組み込まれているのでnpmとかが必要ないのです。
2.Typescriptが使える
Node.jsで使うにはコンパイルとかいろいろしないといけなかったのがDenoはそのまま実行できます。
もちろんJavascriptも使えますけどね。
3.セキュリティが強くなった(語彙力)
Denoは--allow-netなどのフラグを使わないとファイルやネットワークにアクセスできないようになっています。
フラグがなくても動くには動くのですが、実行前に権限がないから権限付与するかい?的なことが聞かれるようになりました。
4.Web標準の互換性がある
DenoはWeb標準の互換性があります。
例えば
HTTPリクエストはfetch、WebSocketサーバーと接続するならWebSocketオブジェクトなど。
5.一応npmも使える
Denoはnpmも使えます。
Denoでパッケージをinportするときにnpm:<パッケージ名>@<バージョン>と指定してやるとnpmのパッケージが使用できます。
全部が全部対応しているわけではないですが、主要なパッケージはほとんど対応しています。
他にもいろいろありますがこんなもんでしょう。
おわりに
Node.jsの記事は大量にあるのにDenoの記事があまりなかったのでこの記事を書きました。
まだまだNode.jsには届きませんがDenoのことを知ってもらえたら嬉しいです。
参考にしたサイト