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
jsx2js_js2jsx
Search
Yosuke Furukawa
PRO
June 08, 2014
Programming
6.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
jsx2js_js2jsx
天下一ajtjs武闘会LT発表資料
Yosuke Furukawa
PRO
June 08, 2014
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
Webの地図
yosuke_furukawa
PRO
3
3.3k
XHTMLが残したもの
yosuke_furukawa
PRO
2
470
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
390
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
280
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.3k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
360
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.2k
Other Decks in Programming
See All in Programming
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
120
What We Talk About When We Talk About XP
m_seki
2
440
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
5
2.5k
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
55
36k
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
420
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.4k
新卒PdEのリアル
ryu1013
1
470
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Building an Out-of-Order CPU
latte72
1
740
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
140
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Being A Developer After 40
akosma
91
590k
Designing Experiences People Love
moore
143
24k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Producing Creativity
orderedlist
PRO
348
41k
Transcript
JS to JSX, JSX to JS @yosuke_furukawa
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද / DeNAॴଐ
ఱԼҰaltjsಆձ JSX
ఱԼҰaltjsಆձ ....
None
ଟ͜Μͳײ͡ʹἤΓ͋͏ձͱ༧
͜Μͳ෩ʹֶͼ
࠷ऴతʹ͜͏ͳͬͯؼΓ͍ͨ
ຊฤ
JS to JSX
JSXܕ͕͋ΔaltJS interface Animal {// interfaceΛఆٛͰ͖Δ function say () : void;
} ! class Duck implements Animal { // interfaceΛimplementsͰ͖Δ override function say () : void {// ࣮ log("quack!"); } } ! class Dog implements Animal { override function say () : void { log("bow!"); } }
JSXܕ͕͋ΔaltJS interface Animal {// interfaceΛఆٛͰ͖Δ function say () : void;
} ! class Duck implements Animal { // interfaceΛimplementsͰ͖Δ override function say () : void {// ࣮ log("quack!"); } } ! class Dog implements Animal { override function say () : void { log("bow!"); } } طଘͷJSΛ͏ʹbinding͕ඞཁʂʂ
JSXͱTypeScriptͷbindingͷҧ͍ ! TypeScriptܕఆٛϑΝΠϧͱJavaScriptΛ͢Δ JSXܕఆٛϑΝΠϧʹJavaScriptΛهड़͢Δ
JSXόΠϯσΟϯάͷॻ͖ํ native class JSON5 { static function parse(str:string) : variant;
static function stringify(json:variant) : string; } = "require('json5')"; ͜͜ʹ+BWB4DSJQUͰ࣮Λॻ͚Δ ܕఆٛΛॻ͘
ࢥతʹTypeScriptͷํ͕៉ྷ JSXͷํ͕ࠞಱΛ࢈Ή͕ ࠇຐज़తͳ͍ํ͕Ͱ͖Δ
JSXόΠϯσΟϯά୯ͳΔόΠϯσΟϯά͡Όͳ͍ native class JSON5 { static function parse(str:string) : variant;
static function stringify(json:variant) : string; static function strictParse (st:string) : variant; } = """ (function(){ var json5 = require(‘json5’); var json5x = { parse : json5.parse, stringify : json5.stringify, strictParse : JSON.parse }; return json5x; }()); """; ৽͍͠ػೳՃͨ͠Γɺ ΠϯλϑΣʔεม͑ͨΓɺ όΠϯσΟϯά͡Όͳ͘ ͯϥούʔʹ͍ۙ
JSX to JS
JSXίϯύΠϧޙͷJavaScriptΛ طଘͷJavaScript͔Β͑Δɻ
JSX-linker !
JSX-linkerͷػೳ ίϯύΠϧޙͷJSΛଞͷJS͔ΒಡΊΔΑ͏ʹ͢Δ ! ! Common-JS style Closure compiler style AMD
style export global Support WebWoker import
JSX-linkerΛ͏ // require͔ΒಡΊΔΑ͏ʹͳΔɻ $ jsx test.jsx | jsx-linker -t commonjs-lib
--stdin -o test.js // global͔ΒಡΊΔΑ͏ʹͳΔ $ jsx test.jsx | jsx-linker -t export-global --stdin -o test.js // amd͔ΒಡΊΔ $ jsx test.jsx | jsx-linker -t amd-lib --stdin -o test.js // closure compiler ͔Β $ jsx test.jsx | jsx-linker -t closure-lib --stdin -o test.js // webworker͔Β $ jsx test.jsx | jsx-linker -t webworker --stdin -o test.js
JSX-linkerΛ͏ // require͔ΒಡΊΔΑ͏ʹͳΔɻ $ jsx test.jsx | jsx-linker -t commonjs-lib
--stdin -o test.js // global͔ΒಡΊΔΑ͏ʹͳΔ $ jsx test.jsx | jsx-linker -t export-global --stdin -o test.js // amd͔ΒಡΊΔ $ jsx test.jsx | jsx-linker -t amd-lib --stdin -o test.js // closure compiler ͔Β $ jsx test.jsx | jsx-linker -t closure-lib --stdin -o test.js // webworker͔Β $ jsx test.jsx | jsx-linker -t webworker --stdin -o test.js cool isn’t it !? :D
JSXͱJSͷؒʹ֞ࠜͳ͍
+49 Thanks :D