2
0

Denoってなに?試しに使ってみよう

Last updated at Posted at 2024-02-28

2か月前に投稿してそのまま放置してました。
まあUbuntuやらなんやらで遊んでただけですがね
さて本題に戻って、今回はDenoってなに?って人向けに簡単に説明を書きます。

Denoとは

Node.jsの作者のライアン・ダールがJSConf EU 2018での公演「Node.jsに関する10の反省点」で発表されたJavascirpt・Typescirptのランタイムです。

インストール方法

Windowsは

PowerShell
irm https://deno.land/install.ps1 | iex

Mac・Linuxは

Bash
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のコードを書いて実行してみましょう。

index.ts
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のことを知ってもらえたら嬉しいです。

参考にしたサイト

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0