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

Yosuke Furukawa

May 26, 2021
Tweet

More Decks by Yosuke Furukawa

Other Decks in Programming

Transcript

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

    ϯυΤϯδχΞͰ΋͋ΔΘ͚ͩ ͕ɺ ͔ͩΒͱ͍ͬͯͳΜͰ΋ ຊ౰ʹ΄͍͠ͷ͔ɺͱ͍͏ͷ ͸େ͍ʹٞ࿦ͷ༨஍͕͋Δɻ
  2. atob / btoa • atob / btoa ͸ binary ͱ

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

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

    > decodeURIComponent(atob(btoa(encodeURIComponent("͜Μʹͪ͸"))))
 
 '͜Μʹͪ͸' // ͜ͷΑ͏ʹ decode / encode ͯ͠ ASCII Ͱ΋ΤϯίʔυͰ͖ΔΑ͏ʹ͔ͯ͠Β΍ Δඞཁ͕͋Δɻɻɻɻ
  5. Node.js ʹ͸΋ͱ΋ͱ buffer ͕ ͋Δ const str = "͜Μʹͪ͸"; const

    base64 = Buffer.from(str, "utf-8").toString('base64'); console.log(Buffer.from(base64, "base64").toString('utf-8')); // ͜Μʹͪ͸