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
jsx2js_js2jsx
Search
Yosuke Furukawa
PRO
June 08, 2014
Programming
6.6k
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
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
250
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
Strip Types と Storage
yosuke_furukawa
PRO
4
520
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
Other Decks in Programming
See All in Programming
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
450
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
今さら聞けない .NET CLI
htkym
0
190
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
290
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
120
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
190
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.6k
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
360
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
120
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
250
The browser strikes back
jonoalderson
0
1.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
Making Projects Easy
brettharned
120
6.7k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
It's Worth the Effort
3n
188
29k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
The Curious Case for Waylosing
cassininazir
1
450
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