隅田川.js #1
https://gyazo.com/f5d38ddb1f79462cb2d7c2cf6d776a7d
https://sumidagawajs.connpass.com/event/167632/
Denoを試してみた
https://speakerdeck.com/tkiryu/try-deno
TatsushiKiryu
CADDi株式会社
ざっくり説明
Ryan Dahl作
nodejs作者
TypeScriptファースト
ビルトインでユーティリティがある
node.jsとの違い
npmを使っていない
package.jsonも使わない
es modulesを使う
Promiseを使う
明示的な許可が必要
試したこと
getting started
https://deno.land/manual/getting_started
HTTP request requires --allow-net
deno run -hでヒント
multipleで複数実行
環境構築
VSCodeのExtension
deno公式がある
justjavac
settings.jsonでenableするだけ
Style Guide
ファイル命名規則
underscoreを使う
indexは使わない
エントリーポイントが必要ならmod.tsにする
コードスタイル
関数の必須引数は最大2つ
オプション引数はオブジェクトとして渡す
オプション引数はプレーンオブジェクトである
トップレベル関数にはfunction
arrow functionはクロージャーに限定する
Deno API
3rdパーティモジュール
webのどこからでもimportできる
https://deno.land/x
コード補完が効かない(型の恩恵が得られない)
型定義を指定した
// deno-types=""で指定する
nodeのパス解決に依存しているのはない分参照しているので無理
React.jsの型定義ファイル
npmの@typesはないのか?
deno.land/x/types
現状Reactの型定義のみ
pika.devは検索性がよい
next.jsで自分のブログを作る
https://mizchi.dev/slides/develop-mizchi-dev
mizchi
mizchi.dev
ampのボタンにariaがない
full AMP
GA対応
Gitから編集ヒストリの生成
どんなブログがほしかったのか
Lighthouseで満点出す
mdxで書きたい
サーバーの運用をしたくない
next.jsの最適化に乗りたい
つくった
CDN上で静的サイト+Full AMP
mdxコンパイラを自作
netlify
本音
静的サイト運用の知見を貯めたい
Reactでガシガシ動く作例を置く場所がほしかった
next.jsのSSGとAMPモードの採用
amp: trueするだけ
AMPのプラグインをつっこむ
rollup+preact+amp-scriptで動的なコンポーネントが作れる
AMP環境のmarkdownに求められる仕様
img => amp-imgかつlayout仕様を満たす固定幅の要素に
数式ブロックをamp-mathmlに変換
コードライトはランタイムで構文解析できない
MDXについて
markdown内でimport構文が使える
AMDX
https://github.com/mizchi/amdx
Accelarated MDX
AMDXG: AMDX による静的サイト生成ツールキット
amdx-loader: amdx の webpack 用のローダー
amdxg-components: ブログ用のデフォルトコンポーネント集。使わなくてもいい
amdxg-cli: ページの雛形や各種メタデータ生成用の CLI
amdxg-boilerplate: ただのボイラープレート。(注意: まだ安定してない。頻繁に変わる)
ドキュメントの解析
docs/*.mdx の frontmatter を解析
ain't giving up type-safe Express
https://speakerdeck.com/andoshin11/aint-giving-up-type-safe-express
andoshin11
フリーランスエンジニア
Expressとtypescript
@types/express
公式の型定義がなかった
メソッドごとに型定義ができるように
get
post
delete
Route handlers
ほぼほぼ any
型検査もない
Requestへジェネリックに渡せる
Declarationファイルを分ける
メソッドに合わせて値を返す
50〜100個のAPIはザラ
typed-oax
Open API
Open API AST
Typescript AST
Handler Types (d.ts)
Reactでstatefulなコンポーネントをどう作るか
pikohideaki
前提
コンポーネントをツリー状に組み合わせてUIを構築
statefulなものとstatelessのものがある
view関数=stateless関数コンポーネント
view関数は同じpropsに対して同じhtmlを返す
状態管理について
ほとんどはstatelessにするのが好ましい
elmはすべてview関数にすることが推奨
view関数のみでアプリUIを構築する
それでもstatefulコンポーネントを使う
htmlの中に置くだけで使える
UI要素に付随する状態や副作用を隠蔽できる
インターフェイスがすっきり
ライブラリで提供するのは比較的わかりやすい
例
MultipleDatePicker
悩み
propsをstateにマージさせるとややこしい
statefulな子コンポーネントをpropsで渡した値によって変化させるのはインターフェイスとしてわかりにくい
どうつくるか
マイルール1
1. view関数
2. 状態遷移を定義したreducerと初期状態
3. 1と2を適切に組み合わせたstatefulコンポーネント
マイルール2
propsとして時間変化する相対を受け取らない
複雑なアプリケーションを実装する上で疎結合に作るのは重要
状態管理を一箇所に集めると見やすいわけではない
Nice to Meet you, Deno!
hoshi
株式会社POL
Denoとは何か
セキュアなJS/TSランタイム
ブラウザとサーバサイドの互換性、セキュリティを重視
ディーノと読む
v8エンジンをrustのAPI経由でAPIをいじる