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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
230
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.2k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.7k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
340
Removing Corepack
yosuke_furukawa
PRO
9
1.9k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.1k
Strip Types と Storage
yosuke_furukawa
PRO
4
510
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
3k
Other Decks in Programming
See All in Programming
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
610
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
720
RTSPクライアントを自作してみた話
simotin13
0
490
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
500
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
630
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
750
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
930
New "Type" system on PicoRuby
pocke
1
470
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
230
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Tell your own story through comics
letsgokoyo
1
940
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
How to make the Groovebox
asonas
2
2.2k
Agile that works and the tools we love
rasmusluckow
331
21k
How to train your dragon (web standard)
notwaldorf
97
6.7k
30 Presentation Tips
portentint
PRO
1
320
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