Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nuxt.jsでCompositionAPIを使う
Search
kubotak
February 25, 2020
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nuxt.jsでCompositionAPIを使う
Roppongi.vue#5 LT
kubotak
February 25, 2020
More Decks by kubotak
See All by kubotak
ハーネスエンジニアリング白書
kubotak
0
75
Laravelにはdeleted_atがありますけど?
kubotak
2
110
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
2.2k
情報漏洩させないための設計
kubotak
6
3.1k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
240
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
680
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
1.1k
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
12k
(うまくいった||いかなかった) 技術選定は何を考えていたか
kubotak
1
1.5k
Other Decks in Programming
See All in Programming
act2-costs.pdf
sumedhbala
0
120
FDEが実現するAI駆動経営の現在地
gonta
2
200
えっ!!コードを読まずに開発を!?
hananouchi
0
230
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3k
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
1.7k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
140
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
360
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
660
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
WENDY [Excerpt]
tessaabrams
11
38k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Building an army of robots
kneath
306
46k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
Transcript
Copyright © M&A Cloud All rights reserved. Roppongi.vue #5 @KenjiroKubota
Nuxt.jsでCompositionAPIを使う 1
Copyright © M&A Cloud All rights reserved. Profile 2 久保田
賢二朗 kubotak-is kubotak_public kenjiro.kubota 株式会社M&Aクラウド所属 PHP JavaScript Go Scala
Copyright © M&A Cloud All rights reserved. 3 PR
Copyright © M&A Cloud All rights reserved. 前置き 4 LaravelからNuxt.jsへ
Laravel(PHP)で作られたサイトをNuxt.jsに移行 LaravelでHTTP APIを作成し、Nuxt.jsでフロントエンドを作る ❏ フロントエンドはVue.jsを使っていたので学習コストが低いだろうと Nuxt.jsを選定 ❏ 型安全の恩恵を受けるためにTypescriptで開発 ❏ Vue.js version3で導入が決まっているCompositionAPIを利用
Copyright © M&A Cloud All rights reserved. 前置き 5 Composition
APIについては詳しく話さない もうみんな耳にタコができるくらい聞いていると思うのでCompositionAPIについ ては詳しく話しません。
Copyright © M&A Cloud All rights reserved. お品書き Nuxt.js +
CompositionAPI 6 1 Nuxt.js + Typescript + Composition API 2 Nuxt.js + Vuex 3 Vuex + CompositionAPI
Copyright © M&A Cloud All rights reserved. Nuxt.js + Typescript
7 Typescript Nuxt.jsをTypescriptで開発する ためにNuxt Typescriptを利用し てスケルトンを作成
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 8
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 9 pluginsディレクトリにこんな感じのファイルを作成
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 10 nuxt.config.tsのpluginsに作成したファイルを指定
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 11
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 12 SFCで普通にComposition APIが利用できる ※2020/02現在ではCompositionAPIライブラリが必須
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 13 @nuxt/types/app/vue.d.tsにNuxt.js特有のSFCプロパティ の定義があるのでTypescriptの恩恵を受けられる
Copyright © M&A Cloud All rights reserved. 14 (o`・ω・´σ)σ 普通に使えそうやん と思ったが
Copyright © M&A Cloud All rights reserved. 15 (o`・ω・´σ)σ 普通に使えそうやん と思ったが
そんなことはなかった _:(´ཀ`」 ∠):
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 16 Nuxt.js + Composition APIの問題点 Nuxtはサーバーサイドレンダリングの際に、サーバーサイドで取得し たデータをHTMLのscriptタグにwindow.__NUXT__.~に出力して、ク ライアントサイドでステートをマッピングすることができるが CompositionAPIを利用した際にはうまく出力されなかった・・・ (書き方を間違えているかもしれないのでホントはできるぞという方は 後で連絡ください)
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 17 Nuxt.js + Composition APIの問題点 templateに埋め込んでHTMLとしてサーバーサイドレンダリングはされ るのでSEOとしては利用できるが、その出力した変数情報は空になって しまうのでAPI通信などでデータ取得してる場合はクライアントサイド でも再度取得しなければならない・・・
Copyright © M&A Cloud All rights reserved. 18 ( ー`дー´) ならばVuex
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
19 Nuxt.jsにはVuexコアが組み込まれている Vuexについてはみなさんもうご存知と思うので詳しく説明しません。 Nuxt.jsではstoreディレクトリにあるファイルをVuexとしてインポート する仕組みを持っている。 ここで状態管理がされたステートはwindow.__NUXT__.~を利用してク ライアントサイドでステートを引き継ぐことができる
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
20 VuexとTypescript Nuxt.jsでVuexをTypescriptで扱う場合は大きく以下の2パタンある • クラスベース • Vanilla
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
21 クラスベース vuex-module-decorators を利用する
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
22 Vanilla Vuexに用意されている型 定義を利用して素朴に記 述する
Copyright © M&A Cloud All rights reserved. 23 クラスベースに慣れてないので Vanillaを採用
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
24 nuxt-typed-vuex Vuexで型定義の恩恵を受けられるライブラリがあるらしいが検証でき てない(懇親会があったら聞きたかった・・・!)
Copyright © M&A Cloud All rights reserved. 25 ( ゚д゚
)あれ? Composition APIは?
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 26 SFC Composition API Vuex SFCから直接Vuexにdispatchやgettersを実行せず、CompisitionAPI側 にVuexとの接続を隠蔽
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 27 なぜCompositionAPIを挟むのか • 現状でVuexとのやりとりが文字ベースなので型情報が失われるの でCompositionAPIで型を定義し直す ◦ nuxt-typed-vuexで解決するかも • SFCが依存するものをCompositionAPIだけに制限したい • 将来的にサーバーとクライアントのステート共有が CompositionAPIだけになったらいいなという期待 • クライアントサイドだけで非同期通信して値を取得する場合は Vuexを使わず、CompositionAPIだけで完結させている
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 28
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 29 Vuexを利用している場合はCompositionAPIは右から左に バケツリレーするだけ
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 30 先程の構成のCompositionAPIをテストする(Jest)
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 31 LocalVueにVuexとCompositionAPIを登録
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 32 VuexStoreの登録
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 33 モジュールモードで登録されるように加工
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 34 APIレスポンスのモックを作成
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 35 モックの差し込み
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 36 簡単でしたね?
Copyright © M&A Cloud All rights reserved. まとめ 37 まとめ
• Nuxt.js+CompositionAPIはサーバーサイドとクライアントサイド でのステート共有においてまだ使えないが、既存の仕組み(Vuex) と組み合わせることで問題なく使える • 懇親会で色々聞きたかった人生
Copyright © M&A Cloud All rights reserved. 38