Meguro.es #19 - おいでよDenoland https://gyazo.com/2ae63992f2ec0dd6046bfab1a215deeb
今日話すこと
Denoの現状と思想とユーザーランドの動き
話さないこと
Deep Dive into Deno
Denoとは
A new way to JavaScript.
A secure runtime for JavaScript and TypeScript built with V8, Rust, and Tokio に戻ってた 2019-05-10
Node.jsの創始者であるRyanがNode.js設計の反省から始めた新しいServer Side Runtime
TypeScript / ECMAScriptが使える
Design Mistakes in Node
Denoの説明 in 2019/01
Deno入門
このへんがとてもわかりやすいです
Deno
https://gyazo.com/221d5dd44e11ccb064a13eadab4afe21
Denoは単体の実行ファイルとして配布される
何を意味するかと言うと
Node.jsのようにディレクトリ + package.jsonではない
1レポジトリ = 1モジュールという文化からも開放された
Denoの実行にはDeno以外のソフトウェアを必要としない
インストールかんたん
最近pythonがインストールに要らなくなったので更に必要しなくなった
curl -fL https://deno.land/x/install/install.sh | sh
deno ./hoge.ts
DenoはES modulesのみを扱う
既存のNode.jsライブラリ/ESライブラリとの互換性
依存のない純粋なTS/ES/CommonJS
importできるよ
ex: lodash
ES modulesの記法で相対的な依存のあるTS/ES
できるよ
ただしextensionを省略した記法はNG
相対的な依存のあるCommonJS
できないよ
なぜならrequireは使えないから
Node.js標準ライブラリに依存しているTS/ES/CommonJS できないよ
npmライブラリに依存しているTS/ES/CommonJS
できないよ
移植例
少し不毛な感も否めないがdeno用に書き直すしかない
あとテストも書き直す
既存npm modulesとの互換性は低い
npm blackholeの重力に魂を縛られたmodulesばかりだから
https://pbs.twimg.com/media/DEIV_1XWsAAlY29.jpg
Denoはセキュリティを保証する
--allow-net ネットワーク
--arrow-write ファイル書き込み
--allow-read ファイル読み込み
もう少しで入りそう
--allow-env 環境変数の参照
--allow-run 実行
-A 全て
Deno is Browser compatible
代表的なのはfetch
これからlocalStorageとsessionStorageを作っていくらしい
https://gyazo.com/b3ea2de7df5b1268f6acea7137b3e08c
って書いてたけど2時間前には半分以上できてた
こういったコンパチ実装が後々どう恩恵を受けるのか
わからない
Global一覧はGithubで見れる
https://gyazo.com/8ba7a3d179b337324e462f3cc71ee07e
windowとは
互換例
kyというfetch wrapperのライブラリがDenoにも対応した
Ky targets modern browsers and Deno.
Browser + ES modulesのライブラリはDeno対応しやすいかもしれない
deno現状
おそらく来月には古くなっている
一行説明の変遷
Before: A secure JavaScript / TypeScript runtime built on V8
After: A new way to JavaScript.
0.27から - JS(ES)が動くようになった
import ~~~ from ~~~.jsもできるしdeno *.jsも動く
https://gyazo.com/302963a22b4d4c11f242237ab012d701
Prettierがdeno本体に入った
deno [filename] --fmtでフォーマットされる
「deno_stdにコミットするときはフォーマットしてね」というルールが追加された
ユーザーランド
denopkg
Githubのraw.githubusercontent.comの部分をdenopkg.comに短縮できるリダイレクトWeb
バージョンはhttps://denopkg.com/lodash/lodash@4.17.10-es/map.js のように書ける
CDENO
npmレポジトリみたいなCDN
registryもあるけど、この辺り皆まだ省エネルギー
これからこういった場がユーザー発信で作られていくのかもしれない
Awesome Deno
日本勢が多い
awesome-deno modules = denoコミュニティが把握しているほぼ全て
作ったことが既にAwesome
コミュニティ
公式Gitter
日本語Scrapbox
日本語Slack
まとめ
Denoのエコシステム、Denoの思想を元にした全体の設計もまだ途中
ライブラリはまだ全然足りない
今なんか作ったら標準ライブラリに入る可能性高い
もしくはdeno_std
日本語圏コミュニティが活発
覗いてみてね!