What I learned from an old GitHub project that won 3,000 Stars in a Week

์˜ฌํ•ด ์ดˆ freeCodeCamp์— ๊ธฐ๊ณ ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. ํšŒ์‚ฌ์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์•Œ๋ฆฌ๋ฉฐ ์ƒˆ๋กœ ์–ป๊ฒŒ ๋œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

JavaScript AOP ๋ง›๋ณด๊ธฐ

์ง€๋‚œ์ฃผ, ๋™๋ฃŒ๊ฐ€ ๋ฒˆ์—ญํ•œ ES6 Proxy์— ๋Œ€ํ•œ ๊ธ€์„ ์ฝ์—ˆ๋‹ค. ์ดํ›„ย JavaScriptย AOP(Aspect Oriented Programming๋ผ๋Š”ย ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ฌ๋ž๋‹ค. ์Œ.. ๋ˆ„๊ฐ€ย JavaScriptย AOP์— ๋Œ€ํ•œ ์–˜๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ๋“ค์–ด๋ณธ ์ ์ด ์žˆ๋˜๊ฐ€? ์žˆ๊ธฐ๋Š”ย ํ•œ ๊ฑด๊ฐ€?ย ์ด ๊ธ€์€ย JavaScriptย AOP ๊ทธ๋ฆฌ๊ณ  ES6 Proxy๊ฐ€ ์–ด๋–ป๊ฒŒ AOP์™€ย ๊ด€๊ณ„์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค.

JavaScript์—์„œ Rust, ๊ทธ๋ฆฌ๊ณ  Rust์—์„œ JavaScript: wasm-bindgen ์Šคํ† ๋ฆฌ

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ WebAssemblyย ์ปดํŒŒ์ผ์ด ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ์ง€,ย ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€, ๊ฑฐ๊ธฐ์—ย ์–ผ๋งˆ๋‚˜ ๋” ์ž‘์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋Š”์ง€ย ํ™•์ธํ–ˆ๋‹ค. ๋”์šฑ์ด ์šฐ๋ฆฌ๋Š”ย Rust์™€ JavaScript ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋” ๋‚˜์€ ํ˜‘์—…์„ ์œ„ํ•œ ๊ณ„ํš์„ ์„ธ์› ๊ณ , ์ด๊ฒƒ์—๋Š” ๋‹ค๋ฅธ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์„ ์œ„ํ•œ ๊ฒƒ๋„ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.ย ์ด์ „ ๊ธ€์—์„œ๋„ ์Šฌ์ฉ ๋งํ–ˆ์ง€๋งŒ, ๋‚˜๋Š”ย wasm-bidgen์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.