2020年05月15日 18:18
Node.jsの開発者である、ライアン・ダールが作成したDenoが Version 1.0 になり、正式にリリースされました 。
Deno は新しい JavaScript/TypeScript のランタイムで、標準で TypeScript が入っています。
node_modules とは互換性がないので、NPM のパッケージは使えないようですが、ES Module に対応しており、URL でインポートが可能です。
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
またすべての非同期処理が Promise
を返すので、async
で囲む必要がありません。
まだ、詳しく触っていないので細かな思想や使用感等は分かりませんが、マニュアルページが日本語化されているので、そちらを読むほうが良さそうです。
Deno v1.0.0 がリリースされたということでマニュアルページを翻訳ッ - Qiita
Node.js と Deno でエラーの親切さがどれくらい違うのか知りたかったので、以下のコードを実行してみました。
{
let text = "Hello";
text = "Hello World";
let text = "Hello World";
{
let text = "World";
console.log(text);
}
console.log(text);
}
{
const text = "Hello";
text = "Hello World";
}
Node.js の実行結果
PS C:\Users\hi97\desktop> node index.js
C:\Users\hi97\desktop\index.js:5
let text = "Hello World";
^
SyntaxError: Identifier 'text' has already been declared
at Object.compileFunction (vm.js:344:18)
at wrapSafe (internal/modules/cjs/loader.js:1106:15)
at Module._compile (internal/modules/cjs/loader.js:1140:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
at Module.load (internal/modules/cjs/loader.js:1040:32)
at Function.Module._load (internal/modules/cjs/loader.js:929:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
Deno の実行結果
PS C:\Users\hi97\desktop> deno run index.js
error: Uncaught SyntaxError: Identifier 'text' has already been declared
let text = "Hello World";
^
at file:///C:/Users/hi97/desktop/index.js:5:7
簡単なエラーなので大きく変わりませんが、Deno の方は module に関するエラーが表示されないので、問題のエラーが何なのかがすぐに分かって良さそうです。
まだリリースされたばかりで、フレームワークへの採用なども少なく、Node.js に置き換わるとは思っていませんが、ECMA Script の規格を採用していることや、TypeScript の標準サポートなど良さそうな部分はあるので、趣味で使っていきたいと思います。
p { margin-bottom: 1em; } blockquote p { margin-bottom: initial; } #content ul { padding-left: 40px; } .token.operator { background-color: initial; }