Deno
- V8 を使用した Rust 製の JavaScript & TypeScript ランタイム
- ウェブブラウザの外で JS/TS を実行できるようにするもの
- Node.js みたいなもの
- Node.js の作者が作り直したもの (Node.js 設計の失敗 - Ryan Dahl)
asdf
インストール
git で ~/.asdf
に落としてきて最新化
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"
.bash_profile
か .zshrc
に以下を追加してシェルを再起動
. $HOME/.asdf/asdf.sh
Deno のパッケージを入れる
asdf plugin-add deno https://github.com/asdf-community/asdf-deno.git
asdf install deno 1.0.0
asdf global deno 1.0.0
Deno Helloworld
公式サンプルそのままで、見た目普通の js に見えるけど、①package.json
とか作らなくていいし、②npm
は使わないし (標準ライブラリを https で読んでる)、③await
も async
で囲わなくていいみたいなのが読み取れる。
index.js
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
for await (const req of serve({ port: 8000 })) {
req.respond({ body: "Hello World\n" });
}
実行は deno run hoge
。今時のセキュリティも考慮しているのでネットワークアクセスにはフラグが必要。
deno run --allow-net index.js
interpreter
インタープリタもあるよ
% deno
Deno 1.0.0
exit using ctrl+d or close()
> console.log('Yo')
Yo
undefined
> const yo = 'Yo'
undefined
> yo
Yo
>
Servest で動かす (React/tsx)
Servest は Deno 向けの http サーバー。
https://servestjs.org/
作者:https://keroxp.me/
Deno 1.0.0 に追従するように Servest も 1.0.0 に対応した。👏
これも Servest の公式サンプルそのままですみません。
React/tsx が普通に動く。
パッケージは https 経由で指定できるので npm install 不要 (node_modules が作られない)。
Router とかも実装されているので実践で使えてしまえそう。
index.tsx
// @deno-types="https://servestjs.org/@v1.0.0/types/react/index.d.ts"
import React from "https://dev.jspm.io/react/index.js";
// @deno-types="https://servestjs.org/@v1.0.0/types/react-dom/server/index.d.ts"
import ReactDOMServer from "https://dev.jspm.io/react-dom/server.js";
import { createApp } from "https://servestjs.org/@v1.0.0/mod.ts";
const app = createApp();
app.handle("/", async (req) => {
await req.respond({
status: 200,
headers: new Headers({
"content-type": "text/html; charset=UTF-8",
}),
body: ReactDOMServer.renderToString(
<html>
<head>
<meta charSet="utf-8" />
<title>servest</title>
</head>
<body>Hello Servest!</body>
</html>,
),
});
});
app.listen({ port: 8899 });
そのまま実行
deno run --allow-net index.tsx
かんそう
- JS/TS エンジニアは Node.js からドンドコ移行しそう
- マスコットかわいいので流行りそう
- チンアナゴかと思ってた