Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
僕のフロントエンド奮闘記コンポーネントで、すったもんだ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nao-bt
February 24, 2018
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
僕のフロントエンド奮闘記コンポーネントで、すったもんだ
We Are JavaScripters! @16th【初心者歓迎LT大会】の資料です。
https://wajs.connpass.com/event/78939/
nao-bt
February 24, 2018
More Decks by nao-bt
See All by nao-bt
そろそろWebpackと真剣に向き合ってみる
naotobt
9
5.2k
Other Decks in Programming
See All in Programming
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.7k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
620
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
280
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
130
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
190
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
140
スマート反転とウェブアクセシビリティ
camiha
0
180
自分的「カンファレンスの楽しみ方」
syumai
0
200
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Building the Perfect Custom Keyboard
takai
2
870
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
RailsConf 2023
tenderlove
30
1.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
30 Presentation Tips
portentint
PRO
1
390
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Practical Orchestrator
shlominoach
191
12k
Transcript
僕のフロントエンド奮闘記 コンポーネントで、すったもんだ Nao-bt
自己紹介 文系出身・プログラミング歴は約5年目。 サーバーもフロントもやる人。 ※できるとは言っていない。日々勉強中。 JSに関しては 前の会社でAngularJsの1.4系を業務で利用。 徐々にJSの面白みを感じ、個人的にフレームワークを中心に 勉強しはじめる。 いまの会社では レガシーでローカル開発環境のない基幹システムを
Vueを利用してリプレースしてます(主にフロント担当)。
今日は、コンポーネントで すったもんだした話。
JSフレームワークを使った開発を これから始める人に参考になれば・・・。
コンポーネント指向って? 画面をUIパーツごとに 分割して作り、組み合わせる。 パーツごとに作るから、 再利用しやすく 分業やテストがしやすい。
コンポーネント間のやりとり props down(親→子), events up(子→親)
親 子 親は子が どんなプロパティを受け取り どんなイベントを返すかを知っている。 子は親を知らなくてもいい。 コンポーネントの階層が深くなれば バケツリレーのようにしていく。
親は子を必ず知っているが、 子は親を知らなくてもいい。 再利用可能なコンポーネントの肝
JSフレームワークを使うと コンポーネント指向に基づく 開発ができる
でも どんなふうに どれくらいの細かさで コンポーネントって区切るんだ??
サーバーサイドのMVCみたいな 目安になるような分け方の 基準はないのかなぁ
そんなときに巡り合ったのが・・・
Atomic Design
コンポーネントの単位を5つの大きさに分けて作る考え方。 Atoms(原子) Molecules(分子) Organisms(有機体) Templates(テンプレート) Pages(ページ)
引用元:http://atomicdesign.bradfrost.com/chapter-2/
なんとなくよさげだ これでいってみよう。
Vuexも使ってみよう
Vuexを使うことで アプリの状態(データや storeとよばれることも)を コンポーネントから分離することができる。 親子関係のないコンポーネント間でも 状態の表示や変更が可能。 わざわざバケツリレーを書かなくてもよくなる。 Vuex公式サイトより、 Vuex を使った最も基本的なカウンターアプリの例
バケツリレーしなくていいなんて 素敵! 実装がはかどる!!
そう、このとき、 私は浮かれていました・・・。
バケツリレーの代わりにコンポーネント内に Vuex用の記載が増えていった。 ※実際のソースは見せれないので Vuex公式のサンプルより
どんなAction、Mutationがあるかを知らないと 成立しないコンポーネントを大量生産
Vuexと蜜結合で再利用できない
Atomic Designの振り返り ・これ再利用するかな?って場合が多々ある。 ・回数制限を設けて、既定の回数同じのを書いたら、 コンポーネント化するとかもありでは? ・初期は大変だろうけど、どんどん開発が進むにつ入れて楽になる。 ・一般ユーザー向けの場合は、見栄えとか重要だから 同じようなコンポーネントがたくさんできそう。
・Pagesコンポーネントの階層に Vuexをまとめて、そこから下の階層に バケツリレーすべきだった。 ・でも急いで実装しないといけない時は Vuexは助かる。(でも麻薬だと思う) Vuexとの組み合わせについての振り返り
よく考えて実装しないと 大変なことになる・・・。 他の人達がどんな コンポーネント管理してるか気になる! 懇親会で 教えてください・・・。