masalibの日記

システム開発、運用と猫の写真ブログです

今流行りのDeno.landに入門してみた

フロントエンド側とバックエンド側でちょっと有名になった言語があるのですが言語と言うかシステムなのですがdenoというものがあります.

コンセプトとしてはnode.jsの弱点を補った形らしいのですが私はあまり触ったことがないので入門してみたいと思いました。

Denoは、V8を使用し、Rustに組み込まれた、JavaScriptとTypeScriptのシンプルでモダンで安全なランタイムです。

  1. デフォルトで保護します。明示的に有効にしない限り、ファイル、ネットワーク、または環境へのアクセスはありません。
  2. そのままの状態でTypeScriptをサポートします。
  3. 単一の実行可能ファイルのみを出荷します。
  4. 依存関係インスペクター(deno info)やコードフォーマッター(deno fmt)などの組み込みユーティリティがあります。
  5. Denoでの動作が保証されている一連のレビュー済み(監査済み)標準モジュールがあります:deno.land/std

上記は本家からの引用になります

実際に触ってみてなのですが

  1. node.jsと違って NPM というのでインストールすることはしないんでその都度サーバーからインストールするという方式をとっています。
  2. node.jsのコールバック地獄ないみたいなので本当にうれしい
  3. 今流行りのTyepscriptを標準として使えるのもいいところです。 型宣言できるというのはjava系のバックエンド側やってる人には非常にありがたい

環境的にはWindows10です。 何も問題なくインストールできました。 (念のために管理者権限で実行しています)

iwr https://deno.land/x/install/install.ps1 -useb | iex

いつもどおりHello Worldは超カンタン

deno run https://deno.land/std/examples/welcome.ts

さすがにこれだと・・・Hello Worldっぽくないので

import { serve } from "https://deno.land/std@0.54.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
 req.respond({ body: "Hello World\n" });
}

入門する前に必ず入れて欲しい vscode の拡張があります

marketplace.visualstudio.com

こちらをインストールするとコードの補完してくれると言うのが便利です。 補完するにはモジュールのダウンロードする必要があります。

そのため、新しいモジュールをインポートする時は この状態で

import { serve } from "https://deno.land/std@0.54.0/http/server.ts";

で deno run xxxx.tsをする必要があります。 インストール(キャッシュ)しないと補完してくれないのはちょっとめんどくさいかな・・・

インストール前 f:id:masalib:20200531235042p:plain

インストール後 f:id:masalib:20200531235100p:plain