Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。 @ techfeed 2021/05/26

D76231a2114896dfcc7b79ac69558b79?s=128

Yosuke Furukawa
PRO

May 26, 2021
Tweet

Transcript

  1. Node.js ΍ deno ʹ web compatible ͳ API Λ΄͍ͬ͠ ͯݴͬͨͷ͸զʑϑϩϯτΤ

    ϯυΤϯδχΞͰ΋͋ΔΘ͚ͩ ͕ɺ ͔ͩΒͱ͍ͬͯͳΜͰ΋ ຊ౰ʹ΄͍͠ͷ͔ɺͱ͍͏ͷ ͸େ͍ʹٞ࿦ͷ༨஍͕͋Δɻ
  2. Twitter: @yosuke_furukawa Github: yosuke-furukawa

  3. ݩπΠʔτ

  4. ݩπΠʔτ /PEFKTWʹBUPC΍CUPB͕HMPCBMʹೖΔɻ Ͱ΋࢖Θͳ͍Ͱ΄͍͠ɻ BUPCCUPBΛ࢖͍͍ͨͳΒ࢖͍ͨ͘ͳ͍ͱࢥ͏·ͰจࣈΤϯίʔυΛਂ͘ಡ ΈਐΊ͍ͯͩ͘͞ɻ

  5. ͳΜͰʮ࢖͏ͳͬͯݴͬͯΔ ΋ͷʯΛ৽͍͠ػೳͱͯ͠௥ Ճ͠ͳ͖Ό͍͚ͳ͍Μɾɾɾʁ

  6. atob / btoa • atob / btoa ͸ binary ͱ

    ASCII ม׵͞Εͨ base64 ͱͷ૬ޓม׵Λߦ͏ศརAPI • Web API ͱͯ͠༧Ίఆٛ͞Ε͍ͯΔ • ͨͩ͠ɺɺɺ
  7. atob / btoa • atob ͱ btoa ͸ Unicode ʹ͸ରԠ͍ͯ͠ͳ

    ͍ɺ͋͘·Ͱ ASCII ݍͰ͔͠࢖͑ͳ͍΋ͷ
  8. atob / btoa > atob(btoa("͜Μʹͪ͸")) Uncaught: DOMException [InvalidCharacterError]: Invalid character

    > decodeURIComponent(atob(btoa(encodeURIComponent("͜Μʹͪ͸"))))
 
 '͜Μʹͪ͸' // ͜ͷΑ͏ʹ decode / encode ͯ͠ ASCII Ͱ΋ΤϯίʔυͰ͖ΔΑ͏ʹ͔ͯ͠Β΍ Δඞཁ͕͋Δɻɻɻɻ
  9. ͜Μͳ͜ͱ͠ͳͯ͘΋

  10. Node.js ʹ͸΋ͱ΋ͱ buffer ͕ ͋Δ const str = "͜Μʹͪ͸"; const

    base64 = Buffer.from(str, "utf-8").toString('base64'); console.log(Buffer.from(base64, "base64").toString('utf-8')); // ͜Μʹͪ͸
  11. ຊ౰ʹ࢖͍͍ͨͰ͔͢ʁ

  12. ਖ਼௚จࣈίʔυମܥΛؾʹ͠ ͳ͖Ό͍͚ͳ͍ͷ͸ӳޠݍͰ ΋Ұॹʢֆจࣈͱ͔͋Δ͠ʣ

  13. ຊདྷཉ͍͠෺: - fetch - http/3 - etc

  14. ͜Ε͔Β͸ Node.js ΍ deno ʹ web compat ͕ཉ͍͔͠Β ͱݴͬͯԿͰ΋ೖΕ͍͍ͯͷ ͔Λٞ࿦͠Α͏ɻ