Remote.vue #1
https://gyazo.com/9c328ed21a0bb4f5fbd44c2e02457bac
https://lapras.connpass.com/event/177974/
vite 〜Native-ESM powered web dev build tool. It's fast.〜
https://speakerdeck.com/kazupon/native-esm-powered-web-dev-build-tool
kazupon
現在 v0.20.8
What is Vite ?
Evan You
https://vitejs/vite
モダンフロントエンドビルドツール
生まれた背景
VuePressのDev serverが重い
DXがよくない
ES Modulesのリプレイスメントに興味がある
SFCでES Modulesを動かしたい
Vueのコア部分はできている
Snowpackの登場
アイデア
HTTPリクエストをブラウザからImportする
SFCはバンドルなしで動かせるのではないか?
特徴
DevServerの立ち上げが早い
コンパイルがオンデマンド
HMR早い
bundlerと違うもの
開発中はbundleしない
Viteはなぜ速い
esbuild
TSのビルドが20倍早い
HTTPリクエストごとにコンパイルしている
画面単位で更新
ローカル上でも解決するようにしている
node_modulesを解決している
キャッシュ
レスポンスは304で返す
Service Worker
サーバー
Koa
プラグイン
Module Rewrite Server Plugin
JSを書き換える
/@modules/:id
相対パスはソースコード上パス+タイムスタンプ
HTML Rewrite Server Plugin
index.htmlにランタイムコードを埋め込む
Vue Server Plugin
SFCをコンパイル
templateとstyleで別れてビルドされる
HMR Server Plugin
Websocket
self-accept module
import.meta.hot.accept
自分自身で解析処理を行う
ビルドツール
rollup
今後の予定
テストが必要
モジュールの依存関係解消
エラーメッセージ
VitePress
https://github.com/vuejs/vitepress
ぼくのかんがえたさいきょうのVueあーきてくちゃ
https://speakerdeck.com/slont/bokufalsekangaetasaikiyoufalsevueakitekutiya
slont
アーキテクチャについて
ディレクションの知識
大規模アプリで利用できる
フロントエンドの責務
遷移
vue-router
参照
一覧
ロジックが共通化できそう
新規作成・削除
詳細
共通化の余地がない
編集
権限
参照・操作のDOM表示とAPIリクエスト
バリデーション
最強のアーキテクチャ
見通しの良い構成
MVVMのViewModelを分ける
composition API
100行に満たないコンポーネントはSFCにする
SetupContext
それ以外の処理やビジネスロジックを分ける
ディレクトリ
https://gyazo.com/b2b137c24043a498823bcaca76e7fb86
plugins
外部ライブラリの読み込む
enums
ネームスペースをオーバーライドしてメソッド生やす
文字列比較できる
models
APIクライアント
BaseModelはREST APIリクエストの取り扱いを簡易にする
共通処理を書く
extend
CRUDを粗書かなくていい
レスポンスはデシリアライズを通る
エンティティのプロパティに集中
modules
ビジネスロジック
単体テストしやすい
mixins
SetupContextを利用
emit
$touter, $store
dataをリアクティブのオブジェクトにする
APIリクエストはmodels
ビジネスロジックはmodulesから引っ張る
そのほか
viesのコンポーネントは画面数と1to1
componentsに入れるに大きすぎるのはtemplatesに
等しく使われるリソース
VuexにAPIクライアントの責務をもたせない
処理≠ロジック
Vue.observable で状態を管理する
https://speakerdeck.com/odanado/vue-observable-state-management
odan3240
背景
Nuxt.js + Typescript
ページを超える状態管理をする必要
エラー状態
ユーザー状態
管理画面の用途
モチベーション
グローバルな状態管理
Vuex
モジュールモード
ディレクトリ構成と対応するプロパティが動的に生える
求めてるのは単方向データフローではない
Vue.observable
2.6から追加されたAPI
オブジェクトをリアクティブにできる
https://gyazo.com/7231038df82a876406f9f35e0b26b922
エラーハンドリング
Vue.config.errorHandlerに登録されている関数が呼ばれる
サンプル
https://github.com/odan-sandbox/nuxtjs-vue-reactive-error-handler-sandbox
利点
v-ifで分岐してSnackbarやモーダルを表示
Nuxt.jsでSSRしている時でもGoogle Optimize(ABテスト)を動かしたい
すぱいす
eureka inc
SSRとは?
サーバー上でレンダリングする
Google Optimize
ABテスト
GUIでテストできる
アナリティクスと連携できる
「Optimizeを使いたい」
Androidで動かないとは?
Tag Managerの設定を変えた
動かなかった
PCも動かない
一瞬変わってもとに戻っている
hydration
静的なHTMLを動的なDOMにする
見えるけど操作できない状態
DOMを破棄して1から描画
https://gyazo.com/3d9a2ef3ff4f63c77860c0320d4ec6a5
解決
hydrationのあとにテストの起動・実行
mounted
vue.js
onNuxtReady
Nuxt.js
Nuxt.jsのレンダリングについて
v2.1.2
pakages/core/src
nuxt.js
class Nuxt
this._initServer()
レンダーの処理
pacakegs/server/src/server.js
vueRenderer
packages/vue-renderer
ssr.js
createRenderer
createBundleRenderer
vue-server-renderer
npm.icon https://www.npmjs.com/package/vue-server-renderer
終わりゆく Vue 2.x 時代の状態設計の答えと Vue 3 の Provider への期待
https://speakerdeck.com/potato4d/the-last-architecture-of-the-vue-2-dot-x
potato4d
Vue 2.x 時代のアプリケーションの課題
Vuexを使わない
求めていたものが多すぎた
ローカルステート or Store以外の選択肢を考慮できない
なんでもそこに突っ込まれる
使い分けるべきだった
API
HTTPキャッシュ、インメモリ
モーダルフラグ
portal-vue
Teleport
ログインユーザー
Vuex
Storeは使いたい
共通の呼び出し元を用意したい
リアクティブにコンポーネント間のデータ共有
ページ遷移しても保持したい
TypeScriptとの相性
外部リソースとのテスト
個人の結論
Injectを使用する
Nuxt.jsにまつわるもの
thisに生える依存をDIできる
例:this.$axios
メリット
グローバルで露出する状態を最小に
オンメモリキャッシュだけが載った頻繁に叩くAPI
Vuexでは弱い型定義をカスタムできる
vue/types/vueの一般的拡張の範囲で取り扱える
ユーザー定義であることは変わりない
コンポーエントをクリーンかつテスタブルに取り回しやすい
vue-test-utilsと相性がいい
mocksが利用できる
Nuxt.jsだけ?
Provide / injectはVue2.xから使える
Vue3.xからはアクセスしやすくなる
Compostion APIと合わせて使いやすくなる