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
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
240
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
350
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.1k
Strip Types と Storage
yosuke_furukawa
PRO
4
520
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
3k
Other Decks in Programming
See All in Programming
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.5k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
340
symfony/aiとlaravel/boost
77web
0
130
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
関数型プログラミングのメリットって何だろう?
wanko_it
0
180
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
440
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
1B+ /day規模のログを管理する技術
broadleaf
0
140
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
890
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
190
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
The SEO identity crisis: Don't let AI make you average
varn
0
520
A Tale of Four Properties
chriscoyier
163
24k
First, design no harm
axbom
PRO
2
1.2k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
980
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
350
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
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