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
Vue.jsを使って良かったこと
Search
Asai Masami
June 17, 2017
Programming
270
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vue.jsを使って良かったこと
Frontend Nagoya #1 LT
Asai Masami
June 17, 2017
More Decks by Asai Masami
See All by Asai Masami
デラなごや.jsはじめました
pipboy3000
0
140
Other Decks in Programming
See All in Programming
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
140
どこまでゆるくて許されるのか
tk3fftk
0
520
act2-costs.pdf
sumedhbala
0
120
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.9k
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
520
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
490
act1-costs.pdf
sumedhbala
0
240
共通化で考えるべきは、実装より公開する型だった
codeegg
0
270
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.7k
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
390
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Chasing Engaging Ingredients in Design
codingconduct
0
240
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Docker and Python
trallard
47
4k
Building Adaptive Systems
keathley
44
3.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
410
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Transcript
Vue.jsΛͬͯྑ͔ͬͨ͜ͱ ઙҪխݾ ݄
@count0 http://count0.org ઙҪխݾ
ࠓ͓͢͠Δ͜ͱ ͓ࣄͰVue.jsΛͬͯۀπʔϧΛվ मͨ͠ΒͩͬͨͷͰྑ͔ͬͨػೳΛ1 ͓ͭ͠·͢ɻ
VuexͷϓϥάΠϯ
͖͔͚ͬ • ঢ়ଶͷӬଓԽΛlocalstorage͔ΒIndexedDBʹ͢Δඞ ཁ͕͋ͬͨ • ঢ়ଶΛมߋͨ͠ΒIndexedDBͱউखʹಉظͯ͠ཉ͍͠ • ྫ͑vuex-persistedstateΈ͍ͨʹ
vuex-persistedstate ঢ়ଶΛlocalstorageͱಉظͯ͘͠ΕΔɻ ࠷ݶ͏ʹ͜Ε͚ͩɻ ͱͯศརɻ ͜ΕͷIndexedDB൛͕ཉ͍͠ɻ import createPersistedState from 'vuex-persistedstate' const
store = new Vuex.Store({ // ... plugins: [createPersistedState()] })
ͱΓ͋͑ͣconsole.logͯ͠ΈΔ Vue.use(Vuex) function onlyConsole () { return store => {
store.subscribe(mutation => { console.group('onlyConsole plugin') console.dir(mutation) console.groupEnd() }) } } export default new Vuex.Store({ strict: process.env.NODE_ENV !== 'production', state: initialState(), mutations, actions, getters, plugins: [ onlyConsole() ] })
શͯͷmutation͕ૉ௨Γ จࣈ௨ΓTVCTDSJCFʢఆظߪಡʣ͍ͯ͠Δ
mutation typeΛϑοΫʹ store.subscribe((mutation, state) => { switch (mutation.type) { case
types.ADD_ITEM: case types.UPDATE_ITEM: const item = mutation.payload.item localforage.setItem(item.id, item) break case types.REMOVE_ITEM: localforage.removeItem(mutation.payload.item.id) break case types.CLEAR_LIST: localforage.clear().then(() => console.log('clear database.')) break default: break } }) Ϧετͷૢ࡞͕ൃੜͨ͠Β*OEFYFE%#ʹө
͏Ͱ͖ͨ ΞϓϦέʔγϣϯͷmutation typeʹґଘ͓ͯ͠ Γʢີ݁߹ʣΑΖ͘͠ͳ͍͋Δ͕ɺ͜ΕͰ తୡͰ͖ͯ͠·ͬͨɻ ※࣮ࡍͷίʔυlocalForageͷॳظԽಡΈग़ͨ͠σʔλΛঢ়ଶʹ෮ؼͤ͞Δॲ ཧΛߦ͍ͬͯ·͢ɻ
·ͱΊ • store.subscribeΛར༻͢ΕmutationΛϑο Ϋʹͨ͠ॲཧΛ؆୯ʹՃ͢Δ͜ͱ͕Ͱ͖· ͢ • ࠓճͷྫͰIndexedDBͰ͕ͨ͠ɺαʔόʔ αΠυͷDBʹঢ়ଶΛӬଓԽ͢Δ͜ͱγϯϓ ϧʹ࣮Ͱ͖ͦ͏Ͱ͢
͋Γ͕ͱ͏͍͟͝·ͨ͠