Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。 @ techfeed 2021/05/26
Node.js deno ʹ webcompatible ͳ API Λ΄͍ͬͯ͠ݴͬͨͷզʑϑϩϯτΤϯυΤϯδχΞͰ͋ΔΘ͚͕ͩɺ ͔ͩΒͱ͍ͬͯͳΜͰຊʹ΄͍͠ͷ͔ɺͱ͍͏ͷେ͍ʹٞͷ༨͕͋Δɻ
View Slide
Twitter: @yosuke_furukawaGithub: yosuke-furukawa
ݩπΠʔτ
ݩπΠʔτ/PEFKTWʹBUPCCUPB͕HMPCBMʹೖΔɻͰΘͳ͍Ͱ΄͍͠ɻBUPCCUPBΛ͍͍ͨͳΒ͍ͨ͘ͳ͍ͱࢥ͏·ͰจࣈΤϯίʔυΛਂ͘ಡΈਐΊ͍ͯͩ͘͞ɻ
ͳΜͰʮ͏ͳͬͯݴͬͯΔͷʯΛ৽͍͠ػೳͱͯ͠Ճ͠ͳ͖Ό͍͚ͳ͍Μɾɾɾʁ
atob / btoa• atob / btoa binary ͱ ASCII ม͞Εͨbase64 ͱͷ૬ޓมΛߦ͏ศརAPI• Web API ͱͯ͠༧Ίఆٛ͞Ε͍ͯΔ• ͨͩ͠ɺɺɺ
atob / btoa• atob ͱ btoa Unicode ʹରԠ͍ͯ͠ͳ͍ɺ͋͘·Ͱ ASCII ݍͰ͔͑͠ͳ͍ͷ
atob / btoa> atob(btoa("͜Μʹͪ"))Uncaught:DOMException [InvalidCharacterError]: Invalid character> decodeURIComponent(atob(btoa(encodeURIComponent("͜Μʹͪ")))) '͜Μʹͪ'// ͜ͷΑ͏ʹ decode / encode ͯ͠ ASCII ͰΤϯίʔυͰ͖ΔΑ͏ʹ͔ͯ͠ΒΔඞཁ͕͋Δɻɻɻɻ
͜Μͳ͜ͱ͠ͳͯ͘
Node.js ʹͱͱ buffer ͕͋Δconst str = "͜Μʹͪ";const base64 = Buffer.from(str, "utf-8").toString('base64');console.log(Buffer.from(base64, "base64").toString('utf-8'));// ͜Μʹͪ
ຊʹ͍͍ͨͰ͔͢ʁ
ਖ਼จࣈίʔυମܥΛؾʹ͠ͳ͖Ό͍͚ͳ͍ͷӳޠݍͰҰॹʢֆจࣈͱ͔͋Δ͠ʣ
ຊདྷཉ͍͠:- fetch- http/3- etc
͜Ε͔Β Node.js denoʹ web compat ͕ཉ͍͔͠ΒͱݴͬͯԿͰೖΕ͍͍ͯͷ͔Λٞ͠Α͏ɻ