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
RiotJS + CSS #meguroes
Search
mizuki_r
April 19, 2016
Technology
750
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RiotJS + CSS #meguroes
Meguro.es #3 でのトーク内容です
mizuki_r
April 19, 2016
More Decks by mizuki_r
See All by mizuki_r
FrontendUp_新規事業で_Remixを採用した理由と対策.pdf
rymizuki
0
250
税理士ドットコムの 技術的挑戦 #tapioca_lt
rymizuki
0
310
PHPを始めて1年、レガシーシステムにどう向き合っているか #phpstudy
rymizuki
1
840
モダンとレガシー #gotandaem
rymizuki
0
600
Vuexに型を付けるパターンを調べた #gotandajs
rymizuki
0
150
DockerでNodeの開発は厳しいのか? #gotandajs
rymizuki
3
430
マネージャー!きみは何者だ! #gotandaem
rymizuki
0
1.8k
物語を楽しむための物語論
rymizuki
0
560
失敗と向き合う
rymizuki
0
1.6k
Other Decks in Technology
See All in Technology
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
280
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
380
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
220
SRE Next 2026 何でも屋からの脱却
bto
0
750
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
190
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
200
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
8
3.7k
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
150
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
270
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
220
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
710
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Six Lessons from altMBA
skipperchong
29
4.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
A better future with KSS
kneath
240
18k
Building Applications with DynamoDB
mza
96
7.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Transcript
RiotJSͱCSS 2016/04/19 Meguro.es #3 @mizuki_r
PROFILE @mizuki_r 5XJUUFS!NJ[VLJ@S (JUIVCSZ@NJ[VLJ OQNNJ[VLJ@S "OHVMBS 3JPU+4·ΘΓͷ͍ख (PUBOEB+4͔Β͖ͬͯ·ͨ͠ 2
AGENDA ▸ RiotJSͱ ▸ RiotJS + CSS ▸ RiotJS +
CSS + Webpack ▸ Conclusion
RIOTJSͱ INTRODUCTION
RIOTJSͱ A React-like user interface micro-library ▸ ReactͬΆ͍খ͞ͳUIϥΠϒϥϦ ▸ React͕38.56KBͰRiot͕8.61KBʢhttp://riotjs.com/ja/
▸ API͕গͳ͘ɺֶशίετ͕͍ ▸ ඞཁ࠷ݶͷػೳͷΈͰߏ͞ΕͨɺϛχϚϜελʔτΞο ϓͳײ͡ͷϥΠϒϥϦ
<todo> <!-- layout --> <h3>{ opts.title }</h3> <ul> <li each={
item, i in items }>{ item }</li> </ul> <form onsubmit={ add }> <input> <button>Add #{ items.length + 1 }</button> </form> <!-- logic --> <script> this.items = [] add(e) { var input = e.target[0] this.items.push(input.value) input.value = '' } </script> <todo>
<todo> <!-- layout --> <h3>{ opts.title }</h3> <ul> <li each={
item, i in items }>{ item }</li> </ul> <form onsubmit={ add }> <input> <button>Add #{ items.length + 1 }</button> </form> <!-- logic --> <script> this.items = [] add(e) { var input = e.target[0] this.items.push(input.value) input.value = '' } </script> <todo> ίϯϙʔωϯτΛఆٛ
<todo> <!-- layout --> <h3>{ opts.title }</h3> <ul> <li each={
item, i in items }>{ item }</li> </ul> <form onsubmit={ add }> <input> <button>Add #{ items.length + 1 }</button> </form> <!-- logic --> <script> this.items = [] add(e) { var input = e.target[0] this.items.push(input.value) input.value = '' } </script> <todo> DOMͷఆٛ
<todo> <!-- layout --> <h3>{ opts.title }</h3> <ul> <li each={
item, i in items }>{ item }</li> </ul> <form onsubmit={ add }> <input> <button>Add #{ items.length + 1 }</button> </form> <!-- logic --> <script> this.items = [] add(e) { var input = e.target[0] this.items.push(input.value) input.value = '' } </script> <todo> ৼΔ͍ͷఆٛ
RIOTJSͱ ؆୯ʹ͑Δখ͞ͳϥΠϒϥϦ ▸ JavaScript in HTML ▸ গͳ͍API ▸ lifecycle
(mount, update, updated, unmount) ▸ update ▸ yield ▸ dom events
RIOTJSͱ ·ͱΊ ▸ খͯ͘͞खૣ࢝͘ΊΒΕΔϛχϚϜͳUIϥΠϒϥϦ
RIOTJS+CSS RIOTJSʹ͓͚ΔCSSͷར༻ํ๏
RIOTJS + CSS CSSͷهड़ ▸ λάͷதʹ `<style>` Λهड़͢Δ ▸ `<style>`
ͷதʹCSSΛهड़͢Δ
RIOTJS + CSS CSSͷهड़ <todo> <!-- layout --> <h3>{ opts.title
}</h3> <style> todo { display: block } todo h3 { font-size: 120% } </style> <todo>
RIOTJS + CSS Scoped CSSͷهड़ ▸ λάͷதʹ `<style scoped>` Λهड़͢Δ
▸ `<style>` ͷதʹCSSΛهड़͢Δ ▸ `:scope` ͷٖࣅཁૉʹελΠϧΛͯΔ
RIOTJS + CSS Scoped CSSͷهड़ <todo> <!-- layout --> <h3>{
opts.title }</h3> <style scoped> scope: { display: block } h3 { font-size: 120% } </style> <todo>
RIOTJS + CSS λάΛϕʔεͱͨ͠ελΠϦϯά ▸ ͜ͷ̎ͭͷॻ͖ํಉ݁͡ՌʹͳΔ <todo> <!-- layout -->
<h3>{ opts.title }</h3> <style> todo { display: block } todo h3 { font-size: 120% } </style> <todo> <todo> <!-- layout --> <h3>{ opts.title }</h3> <style scoped> scope: { display: block } h3 { font-size: 120% } </style> <todo>
RIOTJS + CSS headλάͷૠೖ ▸ λάͷ෦ʹهࡌ͞Εͨ `<style>` `<head>` ͷඌʹૠ
ೖ͞ΕΔ ▸ Ұૠೖ͞ΕͨΒɺ࠶ૠೖ͞Εͳ͍ ▸ shadow-domͰͳ͍͕ɺ͍ۙΞϓϩʔνΛऔΔ
RIOTJS + CSS ·ͱΊ ▸ λάͷதʹ `<style>` Λهड़͠ɺͦ͜ʹCSSΛॻ͘ ▸ `<style>`
`<head>` ͷඌʹૠೖ͞ΕΔ ▸ `<style scoped>` Λ͏͜ͱͰɺλά໊ͷهࡌΛলུͰ͖Δ
RIOTJS+CSS+WEBPACK CSSϥΠϒϥϦͱͷ࿈ܞ
RIOTJS + CSS + WEBPACK CSS༷ʑͳϥΠϒϥϦʹࢧ͑ΒΕ͍ͯΔ ▸ autoprefixer ▸ meta
css ▸ postcss ▸ etc… ͜ΕΒͷԸܙΛ͋·ͣ͞ड͚͍ͨ!!!
RIOTJS + CSS + WEBPACK webpackͷར༻ ▸ հলུ ▸ riotjs-loader
+ style-loader + css-loader + anywhere
RIOTJS + CSS + WEBPACK webpackͷར༻ module: { preLoaders: [
{ test: /\.tag$/, exclude: /node_modules/, loader: 'riotjs- loader' }, ], loaders: [ { test: /\.css$/, exclude: /node_modules/, loader: 'style-loader! css-loader!postcss-loader' } ] }, postcss: () -> return [ require('postcss-calc') require('postcss-nested') require('autoprefixer') ]
RIOTJS + CSS + WEBPACK webpackͷར༻ var style = require(‘./style’)
<todo> <!-- layout --> <h3>{ opts.title }</h3> <style>{ style }</style> <todo>
RIOTJS + CSS + WEBPACK webpackΛ͏ϝϦοτ ▸ λάͷఆٛͱɺελΠϧͷఆٛΛҰॹʹཧͰ͖Δ ▸ σΟϨΫτϦʹࠝแͰ͖Δ
▸ ίϯϙʔωϯτͱͯ͠ɺใઃܭɾৼΔ͍ɾσβΠϯ͕ಠ ཱ͠ɺΞϓϦέʔγϣϯ͔Βૄ݁߹ʹͳΔ
RIOTJS + CSS + WEBPACK ·ͱΊ ▸ webpack͏ͱ͍͍Αʂ ▸ webpackΛ͏ͱίϯϙʔωϯτʹσβΠϯ·ͰแͰ͖
Δ ▸ ΞϓϦέʔγϣϯͱίϯϙʔωϯτΛૄʹͰ͖Δ
CONCLUSION ·ͱΊͱɺ͜Ε͔ΒͷCSSઃܭ
CONCLUSION RiotJSͱCSSΛ͍͍ײ͡ʹ࿈ܞͤ͞Δํ๏ͷհ ▸ RiotJSͰCSSΛ͏ʹɺλάʹ `<style>` Λॻ͘ ▸ `<style>` ʹهࡌ͞ΕͨCSS `<head>`
ͷඌʹૠೖ ▸ webpackΛͬͯίϯϙʔωϯτʹσβΠϯΛ࣋ͨͤΔ
CONCLUSION ίϯϙʔωϯτࢦ࣌ͷCSSઃܭ ▸ ίϯϙʔωϯτʹελΠϧΛӅṭ͢Δ࣌ ▸ λάʹରͯ͠ελΠϧΛͯΔ ▸ ˠࢠʹରͯ͠ɺmodifierͰίϯϙʔωϯτ֎͔Β ෦ߏΛҙࣝ͠ͳ͍ૄ݁߹ͳελΠϧ੍ޚ ▸
ίϯϙʔωϯτͱͯ͠ใઃܭɾৼΔ͍ɾσβΠϯΛந Խ͢Δ͜ͱͰɺͦΕ୯ମͷࠩ͠ସ͑ΛΑΓ؆୯ʹ
CONCLUSION ࠓޙͷ՝ ▸ ίϯϙʔωϯτͲ͜·ͰͷσβΠϯΛ͖͔࣋ͭʁ ▸ ৭ʁϨΠΞτʁ༨നʁܗʁ ▸ ͜ͷลΓDDDͷʮڥքΛҾ͘ʯ͋ͨΓͷφϨοδ͕ඞ ཁͦ͏ ▸
ࠓ·ͰҎ্ʹσβΠφͱΤϯδχΞ͕ڠྗͯ͠ઃܭΛ٧Ίͯ ͍͘ඞཁ͕͋Γͦ͏
CONCLUSION ࠷ޙʹ ▸ RiotJS؆୯ʹखૣ͘ϓϩτλΠϐϯάͰ͖ΔͷͰ͓͢͢Ί Ͱ͢ʂʂʂ
ۓٸࠂ ͨ͐͝͡ʔ͔Βͷ͓Βͤ
6/3ʹGontanda.js #4 ͷ։ ࠵Λ༧ఆͯ͠·͢ʂ @pine613 ͨ͐͝͡ʔ͔Βͷ͓Βͤ
ڵຯ͋Δํͥͻ gotanda.js.org ʂ @pine613 ͨ͐͝͡ʔ͔Βͷ͓Βͤ
THANKS!