Closed27

Viteについて学ぶ

tkrytkry

Vite

大昔に少しドキュメントを眺めた気がする。
SPAするときに楽ちん、みたいな認識。
esBuildとRollup使ってる、くらいしか知らない。

https://vitejs.dev/

tkrytkry
tkrytkry

Vite は、ブラウザでのネイティブ ES モジュールの利用可能性や、ネイティブ言語にコンパイルされた JavaScript ツールの台頭など、エコシステムの新たな進歩を活用して、これらの問題に対処することを目指しています。

tkrytkry

バンドラで実現していた機能をブラウザに引き継ぐ、というのが肝っぽい気がする

  • esmを使うことで、毎回全てのコードをバンドルする必要がない
    • 毎回全てのコードをバンドルし直すと、コードベースの大きさに速度が依存する
  • HTTP ヘッダーを活用してページ全体のリロードを高速化する
tkrytkry

Rolldownが登場すると、esBuildとRollupの両方が置き換わる

tkrytkry
tkrytkry

typescript

  • 型チェックは行わず、トランスパイルのみ行う
    • IDEやビルドプロセスで型チェックされる前提のため
  • tsconfigを適切に設定する必要がありそう
tkrytkry

JSX/TSX

  • サポートされてる、jsx->jsはesbuildがトランスパイルしてくれる
tkrytkry

CSS

  • cssやcss modulesも対応
  • pre-processor
    • viteはesnextをターゲットにしてるので、ネストなんかは素のCSSを使った方がいいとのこと
  • Lightning CSSも対応中
tkrytkry

静的アセット

  • パブリックURLが返される
  • (cssにもあったが)パスに特別なクエリをつけられる
tkrytkry

globインポート

  • import.meta.globという特別な関数を使うと、複数モジュールのインポートをglobで記述できる
  • デフォルトはダイナミックインポートだけど設定できる
  • これはVite独自機能
tkrytkry

あとはWeb workerとかCSPとか、ビルド最適化の話

tkrytkry
tkrytkry
  • expressの例だと、viteをミドルウェアとして使用してる
  • 最終的にはReactDOMServer.renderToString()したものをhtmlの中に差し込む感じっぽい
tkrytkry

ハイドレーション的な処理はあるんだろうか(esmでjsをインポートするとハイドレーションみたいなものなんか...?)

tkrytkry
tkrytkry

読んでもよくわからなかったので別ドキュメントを眺める
アセット周りはプロキシの設定が必要とかなんとか

tkrytkry

Inertia、とか聞き慣れないphp側のエコシステムを知らないとわからなさそう
viteのssrとかもできるっぽい

うーん、テンプレートエンジンとどう組み合わさるのかがコードを見ないとイメージできないな
SPA部分をSSRしたいだけならLarabel使わなくて良さそうな気もする

このスクラップは2024/09/14にクローズされました