May 30, 2020 • ☕️ 4 min read
English

Deno 1.0が5月13日にリリースされました。作者はnode.jsの作者であるRyan Dahl氏なので、まず試してみる価値が十分あるでしょう。

サンプルプロジェクト

https://github.com/thundermiracle/try-deno

自分が試して簡単なREST APIを作って、感じた良い点

1. TypeScriptがビルトインで入っている

個人的に静的な解析がチーム開発にすごく重要なこと、特に技術者のレベルが高くない場合は必須だっと、考えています。TypeScript大好きですね。

2. セキュリティ面を考えると、DenoがSandboxに入って、デフォルトは安全である

例えばREST APIを起動するとき、

deno run --allow-net ./src/server.ts

--allow-net明記しないと、APIサーバが立ち上がりません。

3. requireではなく、importをサポートする

CJSは良いんですが、今の時代はやっぱりimportですね。

nodejs
// Bad(☔☔☔)
const fs = require("fs");
Deno
// Good(🌟🌟🌟)
import { readFileStrSync } from "https://deno.land/std/fs/mod.ts";

4. awaitがトップレベルに使える

nodejs v14.3から使えるようになったが、古いプロジェクトのバージョンアップは無理っすね。

nodejs
// Bad(☔☔☔)
async function job1() {...}
async function job2() {...}

// wrapper for async functions
async function doAllJobs() {
  await job1();
  await job2();
}
doAllJobs();
Deno
// Good(🌟🌟🌟)
async function job1() {...}
async function job2() {...}

await job1();
await job2();

5. Goodbye! node_modules

プロジェクトごとで大量なnode_modulesファイルをインストールしなければいけないのが本当によろしくないです。少なくて削除するとき時間かかるでしょう。

Denoの場合はurl importで、Windowsの場合AppDataにダウンロードするからプロジェクトの間パッケージのシェアができ、とても便利でしょう。

nodejs
# after git clone
# Bad(☔☔☔)
cd project1-folder
npm install  # tremendous duplicated node_modules
npm start

cd project2-folder
npm install  # tremendous duplicated node_modules
npm start
Deno
# after git clone
// Good(🌟🌟🌟)
cd project1-folder
deno run server.ts # Deno will download & cache packages automatically if not exist

cd project2-folder
deno run server.ts # Deno will download & cache packages automatically if not exist

完了

その他の部分はexpressとすごく似ているため、大差がないです。ただただTypeScriptに好感がありすぎで、Denoの普及を期待しています。笑


Blog part of ThunderMiracle.com