Deno入門


Denoとは?

  • 読み方「での」らしい
  • JavaScript、TypeScriptの動作環境
  • 作者はNode.jsと同じ人(ライアン・ダール)
  • Node.jsの後悔をもとに再設計をしたもの
  • JavaScriptのエンジンにはV8を採用

Node.jsとの違い


TypeScriptのビルドイン

Node.jsでTypeScriptを利用する場合npmで外部モジュールが必要だった


標準ライブラリで
async/awaitをサポート

非同期関数はコールバックではなくPromiseが返る


Secure Model

デフォルト起動でネットワーク、ファイルへのアクセスなどの外へのアクセスが行えない


ES Modulesに統一

requireが削除されモジュールの取り込み構文がimportに統一された
絶対パス相対パス、URLが利用できる


パッケージという概念の破棄

npmの代わりとなるものはなく、外部モジュールを利用する場合import文にurlを渡すことで利用できる


インストール方法

macOS/Linux

curl -fsSL https://deno.land/x/install/install.sh | sh  

実行すると $HOME/.deno に
バイナリがインストールされる
パスは手動で通す必要があるので注意

Windows

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

まだ試してない


サンプルコードを動かす

const url = Deno.args[0];
const res = await fetch(url);

const body = new Uint8Array(await res.arrayBuffer());
await Deno.stdout.write(body);
deno run --allow-net sample1.ts https://google.co.jp

--allow-net がインターネットの利用許可
なしで実行するとPermissionDeniedと表示される


今までとちょっと変わった実行

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

こんな風にURLでソースを指定して
実行することもできる


その他便利なツール紹介


デバッガ

chromeの開発ウィンドウでデバッグが可能
ブレークポイントも使える!!

使う場合実行時に
--inspect-brk --inspect
をつけるだけ


コードフォーマット

TypeScript、JavaScript
コードフォーマッター付属

# カレントディレクトリ以下のコードをフォーマット
deno fmt
# ファイルを指定してのフォーマット
deno fmt myfile1.ts
# フォーマットに問題のあるファイルと場所の割り出し
deno fmt --check
`