Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Kotlin/JSでもSSGしたい! Zli・LOCAL学生部 合同LT会2021
Slide 2
Slide 2 text
自己紹介 HN: マヤミト 会津大学26期 (学部3年) 所属サークル: Zli GitHub: https://github.com/yt8492 好きな言語: Kotlin, Java, Scala 趣味: Kotlin, 同人音声, VTuber Twitter: yt8492
Slide 3
Slide 3 text
突然ですが 僕のポートフォリオを見てください
Slide 4
Slide 4 text
使用技術 - Kotlin/JS - 1.4.30 - React - styled-components - kotlin-wrappers - kotlin-react - kotlin-styled - kotlin-css
Slide 5
Slide 5 text
皆さんはこう思いませんでしたか?
Slide 6
Slide 6 text
皆さんはこう思いませんでしたか? HTMLとCSSだけでいいじゃん
Slide 7
Slide 7 text
それはそう
Slide 8
Slide 8 text
イケてない点 - 吐き出されたJSがデカい - 291kB - そもそもJS(React)を使う意味とは - このページに動的な要素ないじゃん - HTMLとCSSだけで表現可能 - レンダリングされた状態で返してほしい
Slide 9
Slide 9 text
💡Kotlin/JSからHTMLを生成しよう
Slide 10
Slide 10 text
Reactの要素をHTMLにレンダリングする - ReactDOMServer.renderToString でReactの要素をHTMLのStringに変換する - kotlin-reactにはない😇 - なので自分でラッパーを書きます
Slide 11
Slide 11 text
Reactの要素をHTMLにレンダリングする
Slide 12
Slide 12 text
スタイルが死んでる🤔
Slide 13
Slide 13 text
styled-componentsのスタイルもレンダリングが必要 - ServerStyleSheetを用いてReactの要素をラップする必要がある - kotlin-styledにはない() - なので自分でラッパーを書きます
Slide 14
Slide 14 text
今度こそレンダリングする
Slide 15
Slide 15 text
できた🎉
Slide 16
Slide 16 text
デバッグが大変だな🤔 1. コードを書く 2. GradleのタスクでKotlin/JSをJavaScriptにトランスパイルする ./gradlew browserWebpack 3. Nodeで吐き出されたJSを実行しHTMLを生成する node main.js 4. 画像などのリソースが配置されたディレクトリにコピーする 5. ブラウザから開く
Slide 17
Slide 17 text
SSGにする前はデバッグが簡単だった 1. Gradleのタスクでホットリロードが有効な状態でブラウザで動かす ./gradlew browserRun -t 2. コードを書く 3. 変更が反映される
Slide 18
Slide 18 text
開発中はCSR、本番はSSGにする - Gradleはモジュールを分けることができる - sharedモジュールにReactの要素と画像などのリソースを置く - 開発用のcsrモジュールと本番用のssgモジュールを作り、それぞれからsharedモ ジュールを参照する - resourcesのリソースは参照できなかったのでシンボリックリンクで対応 - いい方法知ってたら誰か教えて - csrモジュールのmain関数にはブラウザで動かすためのコードを書く - ./gradlew :csr:browserRun -t - ssgモジュールのmain関数にはnodeで動かすSSGのコードを書く - ./gradlew :ssg:browserWebpack - node main.js
Slide 19
Slide 19 text
shared csr ssg - Reactの要素 - 画像などのリソース - ブラウザで開くための HTML - SSGのためのラッパー関数
Slide 20
Slide 20 text
開発が楽になった🎉
Slide 21
Slide 21 text
KotlinでSSGするまとめ - Reactやstyled-componentsのSSGに必要な関数は自分でラッパーを書く必要が ある - 逆にラッパーさえ用意してしまえばすんなりできてしまった - デバッグ用にCSRのモジュールも用意すると楽そう
Slide 22
Slide 22 text
あわせて読みたい Kotlin/JSでWebフロント開発をはじめよう https://qiita.com/yt8492/items/250e4f7ac19fa8a66a74 Kotlin/JSでもサーバーサイドしたい! https://qiita.com/yt8492/items/1271b30ecd26f5ca0efb