Pixi.js: HELP WANTED: ES6 ๋ณ€ํ™˜ ๋…ธ๋ ฅ

์— ๋งŒ๋“  2016๋…„ 09์›” 14์ผ  ยท  43์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js

์•ˆ๋…•ํ•˜์„ธ์š” pixi ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค!

์ด PR #2936(@leonardo-silva์—๊ฒŒ ์™ธ์นจ) ๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” Pixi.js์˜ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ES6์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋ชฉ์ ์€ ๋ฏธ๋ž˜์— ๋Œ€๋น„ํ•˜๊ณ  Pixi.js๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” ES6์ด์ง€๋งŒ Babel์„ ์‚ฌ์šฉํ•˜์—ฌ ES5 ํ˜ธํ™˜ JavaScript๋กœ ๊ณ„์† ๋นŒ๋“œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฅ๋ž˜์— ES6+ ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ณ€๊ฒฝ์€ ๊ธฐ์กด PR ๋ฐ ๊ฐœ๋ฐœ์— ๋ฐฉํ•ด๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์–ด๋ ต๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์•ˆ์ •ํ™”์— ๋„๋‹ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

๋„์›€์ด ํ•„์š”ํ•  ๋•Œ ์ •๋ง ์œ ์šฉํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” dev-es6 ๋ธŒ๋žœ์น˜๋ฅผ ์„ค์ •ํ–ˆ๊ณ  ES6์— ๋Šฅ์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ PR์„ ํ™˜์˜ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ const , ๋šฑ๋šฑํ•œ ํ™”์‚ดํ‘œ ๊ธฐ๋Šฅ ๋ฐ ์ •์  ๊ฒŒํ„ฐ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ PR์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์‚ฌ๋ž‘ํ•˜๊ฒŒ ๋œ ๋†€๋ผ์šด Pixi ์†๋„๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Babel ๋นŒ๋“œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ถ„๊ธฐ์—์„œ ์ตœ์‹  ๋นŒ๋“œ๋ฅผ ์—ฐ๊ธฐ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋นŒ๋“œ ๋งํฌ๋Š” ์•„๋ž˜ ์ฐธ์กฐ). ์ด๊ฒƒ์„ v4 ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค.
  • jsdoc์ด ์—ฌ์ „ํžˆ ES6์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์„œ ์—ฐ๊ธฐ ํ…Œ์ŠคํŠธ ๋„์›€๋ง์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์•„๋ž˜ ๋งํฌ ์ฐธ์กฐ).

ES6 ๋นŒ๋“œ
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/pixi.js
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/pixi.min.js

์„ ์  ์„œ๋ฅ˜ ๋น„์น˜
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/docs/index.html

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ์ฃผ์š” ์žฌ์ž‘์„ฑ/์ ์‘์˜ ์ผ๋ถ€๋กœ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. TypeScript์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์š”์ :

  • JavaScript์—์„œ ์œ ํ˜• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ํ‘œ์ค€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์œ ํ˜• ์ฒด๊ณ„ ์™ธ์— ๊ตฌ๋ฌธ์ƒ์˜ ์ฐจ์ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์œ„์น˜์˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์•ฝ๊ฐ„ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pull-request ํ’ˆ์งˆ ๊ฒ€์‚ฌ ์ฆ๊ฐ€ - ์–ด๋–ค ์œ ํ˜• ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŒจ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ฝ”๋“œ ๊ธฐ๋ฐ˜๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํฐ ์ด์ ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.
๊ฑด๋ฐฐ!

๋ชจ๋“  43 ๋Œ“๊ธ€

let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ธฐ๋ณธ๊ฐ’์€ const์ด๊ณ  ์ฐธ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์†์„ฑ์—๋งŒ let์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š”
๊ธฐ๋ณธ๊ฐ’์€ let์ด๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋” ๋งŽ์€ ํžŒํŠธ๋กœ const๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ง„์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ด์ „ ์˜ต์…˜. ๊ธฐ๋ณธ๊ฐ’์€ const๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‚ด๋ถ€ vars๋ฅผ let์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ช…๋ฐฑํ•œ ๋ฒ”์œ„ ์ง€์ • ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ var๋ฅผ jshint์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. const๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŒจ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋“ค:

  • [x] babel-preset-es2015-loose ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด babel-preset-es2015๋งŒ์œผ๋กœ๋„ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • [x] eslint ๋กœ ์ „ํ™˜ํ•˜๋ฉด ES6 ์ง€์›์ด ๋” ์ข‹๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ jshint๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๊ฐ€ pixi ์Šคํƒ€์ผ์˜ ์ข‹์€ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ const ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ let ๋ฅผ ์‚ฌ์šฉํ•œ ์žฅ์†Œ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. const์— ๋Œ€ํ•ด ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ์œ„์น˜๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • [x] jsdoc์˜ ์ตœ์‹  ๋งˆ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์•„์ง ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์€ ES6 ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์›นํŒฉ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

@englercj ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

@englercj babel-preset-es2015-loose์—๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ {"loose": true} ์˜ต์…˜๊ณผ ํ•จ๊ป˜ babel-preset-es2015๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋งํฌ์ธ browserify๋ณด๋‹ค webpack์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
https://github.com/webpack/webpack/tree/master/examples/multi-part-library
http://krasimirtsonev.com/blog/article/javascript-library-starter-using-webpack-es6

๋‚ด ๊ธฐ๋ณธ ์„ค์ •์€ webpack์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์Œ“์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ์†Œ๊ทœ๋ชจ PR. ๊ทธ ๋ณ€๊ฒฝ์€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋ณ€๊ฒฝ์„ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ES6์— ๋Œ€ํ•œ ๊ฐœ์„ ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œ์Šค ๋งต, ํ—ค๋” ๋“ฑ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋” ๋‚˜์€์ง€ ์ดํ•ดํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ์ž.

babel-preset-es2015-loose์—๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋Œ€๋กœ {"loose": true} ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ babel-preset-es2015๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?

ํ•˜, ๊ทธ๊ฑด 2์ฃผ ์ „์— ์ถ”๊ฐ€๋œ _๊ทธ๋ƒฅ_์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋‹น์‹œ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

๋Š์Šจํ•œ ๋ชจ๋“œ์— ๋Œ€ํ•œ Chad์˜ ์ƒ๊ฐ์„ ๋ฐ˜์˜ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋‚ด 2์„ผํŠธ๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์™ธ์นจ์ž…๋‹ˆ๋‹ค.
์„ฑ๋Šฅ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๊ธฐ ์ „์— @GoodBoyDigital ๊ณผ ๋…ผ์˜ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š์Šจํ•œ ๋ชจ๋“œ๊ฐ€ ์ข‹์€ ์ถœ๋ฐœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ํ…Œ์ด๋ธ”์ด ์–ผ๋งˆ๋‚˜ ์ตœ์‹  ์ •๋ณด์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. https://kpdecker.github.io/six-speed/ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

์—ฌ์ „ํžˆ ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ES2015 ๊ด‘๊ธฐ์— ๊ฐ€์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•ด์•ผ ํ•˜๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ๋“ค์„ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: for-of ๊ฐ€ ์—ฌ์ „ํžˆ ํ…Œ์ด๋ธ”์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ๊ฒฝ์šฐ t ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„ ์ž์‹์„ ๋ฐ˜๋ณตํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Babel์€ ์ด์ œ ๋ฐฐ์—ด์— ๋Œ€ํ•ด for-of ๋ฅผ ์ตœ์ ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( Optimization ์ฐธ์กฐ). ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋Š” ๊ฝค ์˜ค๋ž˜๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  @alvinsight ๋‹น์‹  ๋ง์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ES2015์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ข‹์€ ๋ชฉ๋ก @englercj !

@alvinsight์™€๋„ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ es6 ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ›จ์”ฌ ๋” ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๋ผ์šด๋“œ์—์„œ ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค. :)

๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฐ์ •์€ ์„ฑ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. '๋” ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€ ๋งˆ์„ธ์š”.'

๋ฐฐ์—ด ๋ฃจํ•‘์ด ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ๋น ๋ฅด๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ๊ฒƒ์„ ๋Œ€์ฒดํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์›นํŒฉ๋„ ์˜ˆ! @bigtimebuddy ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. ์ด๋Š” es6์œผ๋กœ์˜ ์ด ์ „ํ™˜์˜ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์˜!
๋งˆ์นจ๋‚ด class Sprite extends Container ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค!

์—…๋ฐ์ดํŠธ๋จ

  • jshint ๋ฅผ eslint ๋กœ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  linting ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šน๋ฆฌ๋ฅผ ์œ„ํ•œ eslint !)
  • babel-preset-es2015 ์™€ ํ•จ๊ป˜ loose: true ์‚ฌ์šฉํ•˜๊ธฐ

์ €๋… ๋ชจ๋‘!

์šฐ๋ฆฌ ๋ฏน์Šค ์ธ์œผ๋กœ ์•ฝ๊ฐ„์˜ ์†์ž„์ˆ˜๋ฅผ ์“ฐ์‹ญ์‹œ์˜ค..

Object.assign(
    core.DisplayObject.prototype,
    require('./interactiveTarget')
);

์œ„์˜ ๋‚ด์šฉ์€ ํ˜„์žฌ ES6 ๋ถ„๊ธฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒํ˜ธ ์ž‘์šฉ๊ณผ ๊ฐ™์€ ์ž‘์—…์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

es6 ํด๋ž˜์Šค๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฝ์„œ์— ๋‹ต์„ ์ฃผ์„ธ์š”!

์ข‹์•„ ๋‚ด๊ฐ€ ์ฒ˜์Œ ์˜ณ์•˜์–ด - ์œ„์˜ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๊ธˆ์š”์ผ ๋ฐค์ด๋ผ๋Š” ์‚ฌ์‹ค์— ์ด๊ฒƒ์„ ๋น„๋‚œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?)

๊ตฌ์„ฑ์ด ๋น›๋‚˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”!

ํ , ๋ฌด์—‡์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

class MyThing {}
Object.assign(MyThing.prototype, { newFn: function () { console.log('mix'); } });
var mything = new MyThing();
mything.newFn(); // logs: "mix"

๋ณต์‚ฌํ•˜์—ฌ ํฌ๋กฌ ์ฝ˜์†”์— ๋ถ™์—ฌ๋„ฃ๊ณ  ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด! ํ˜„์žฌ ์ƒํ˜ธ ์ž‘์šฉ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ƒํ˜ธ ์ž‘์šฉ ์†์„ฑ์ด ๋ˆ„๋ฝ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์•„๋‹๊นŒ์š”? ๊ณ„์† ์‚ฝ๋‹ˆ๋‹ค...

์•„ํ•˜! ๊ทธ๊ฒƒ์„ ๋ฐœ๊ฒฌ

Object.assign(
    core.DisplayObject.prototype,
    require('./interactiveTarget') <--- this is a require!
);
import interactiveTarget from './interactiveTarget';

Object.assign(
    core.DisplayObject.prototype,
    interactiveTarget
);

์•„๋งˆ๋„?

์˜ˆ!

์—ฌ๊ธฐ์—์„œ ํ™๋ณด 1: https://github.com/pixijs/pixi.js/pull/2960

๋ฏน์Šค์ธ ๋ฐ ํ…์ŠคํŠธ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด์ผ์€ ํ•„ํ„ฐ๋ฅผ ๋ด์•ผ์ง€...

๊ทธ๋ž˜๋„ ์ •๋ง ์ž˜์ƒ๊ฒผ์–ด์š”!

์ž˜ ํ–ˆ์–ด! ์˜ˆ, ์ด์™€ ๊ฐ™์ด require()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์ƒํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ๋œ ๋‹จ์ผ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ํ•„ํ„ฐ๊ฐ€ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๊ฝค ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด 100% ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€ ๊ฒŒ์ž„์—์„œ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณง ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค!

@bigtimebuddy pixi-animate๋กœ ์ด ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

์ด๊ฑธ ๋˜์ง€๋ฉด.. traceur๊ฐ€ babel๋ณด๋‹ค ๋น ๋ฅธ ๊ฒƒ ๊ฐ™๋‚˜์š”?
์กฐ์‚ฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

https://kpdecker.github.io/six-speed/

์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋Š” ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฉฐ babel์„ ๋Š์Šจํ•˜๊ฒŒ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ typescript๊ฐ€ ๋‘˜ ๋‹ค๋ณด๋‹ค ๋น ๋ฅด๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. :)

์ด ์ฃผ์š” ์žฌ์ž‘์„ฑ/์ ์‘์˜ ์ผ๋ถ€๋กœ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. TypeScript์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์š”์ :

  • JavaScript์—์„œ ์œ ํ˜• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ํ‘œ์ค€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์œ ํ˜• ์ฒด๊ณ„ ์™ธ์— ๊ตฌ๋ฌธ์ƒ์˜ ์ฐจ์ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์œ„์น˜์˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์•ฝ๊ฐ„ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pull-request ํ’ˆ์งˆ ๊ฒ€์‚ฌ ์ฆ๊ฐ€ - ์–ด๋–ค ์œ ํ˜• ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŒจ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ฝ”๋“œ ๊ธฐ๋ฐ˜๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํฐ ์ด์ ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.
๊ฑด๋ฐฐ!

@endel pixi-spine์„ typescript๋กœ ์˜ฎ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. pixi์šฉ TS ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ฐ๋ชจ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@endel ์€ ๊ทธ์ € ๊ถ๊ธˆํ•˜์ง€๋งŒ TS๋Š” ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด์•˜์„ ๋•Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ถœ๋ ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ _๋ชจ๋“  ๊ฒƒ์ด_๊ฐ€ ES5๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜๋˜๊ฑฐ๋‚˜ ๋Œ€์ƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ?

ํด๋ฆฌํ•„์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋˜ ๊ฑธ๋กœ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ์กด ๋ธŒ๋ผ์šฐ์ €์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹จ์ผ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์—ฌ์ „ํžˆ ES5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๋ฉ‹์ง„ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ES5๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋ชจ๋“  ๋ฒ ์ด์Šค๋ฅผ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด TS ์ถœ๋ ฅ ์œ„์— ES6 ํด๋ฆฌํ•„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถœ๋ ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด ์ „๋ฌด(all or nothing) ์ƒํ™ฉ์ด๋ผ๋Š” ๊ฒƒ, ์ฆ‰ ๋ชจ๋“  ๊ฒƒ์ด ES5๋กœ ๋‹ค์‹œ ํŠธ๋žœ์ŠคํŒŒ์ผ๋˜๊ฑฐ๋‚˜ ๋Œ€์ƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ES5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์„ ES5๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ babel, tracuer ๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํด๋ฆฌํ•„์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋˜ ๊ฑธ๋กœ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ babel, tracuer ๋˜๋Š” ๊ธฐํƒ€ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ฌด์—‡์„ ์šด์ „ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค? core-js ํด๋ฆฌํ•„์€ ์–ด๋Š ์ชฝ์ด๋“ (babel ๋˜๋Š” TS) ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ† ๋ก ์€ ES6 -> ES5๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” babel ๋˜๋Š” TS -> ES5๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” TypeScript๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ด๋Š ์ชฝ์ด๋“  ES5๋กœ ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. TS๋Š” ES6์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์›ํ•˜๋ฉด ES6 ๋นŒ๋“œ๋ฅผ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ES5 ๋นŒ๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

@photonstorm TypeScript ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ Babel์—์„œ์™€ ๊ฐ™์ด ES5๋กœ ๋ณ€ํ™˜ํ•  ๊ธฐ๋Šฅ์„ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ €๋Š” TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ทธ๊ฒƒ์ด ๊ต‰์žฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Pixi๊ฐ€ ๊ฒฐ๊ตญ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Google์€ ์ด์ œ ๊ฐœ๋ฐœ์ž๊ฐ€ Angular์™€ ํ•จ๊ป˜ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋„๋ฆฌ ์ฑ„ํƒ๋˜์—ˆ๋‹ค๋Š” ์ข‹์€ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ Pixi๋Š” ์—„๊ฒฉํ•œ ์œ ํ˜•์œผ๋กœ ์ž˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

TypeScript๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์—๋Š” jsdoc(์ด์™€ ๊ด€๋ จ๋œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ๋ฐ require('pixi.js') ์ผ ๋•Œ src๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—…์ŠคํŠธ๋ฆผ ์ข…์†์„ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์ด์™€ ๊ฐ™์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?).

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ES6์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜๋ฉด TypeScript๋ฅผ ์ฝ”๋“œ๋ฒ ์ด์Šค ํ˜„๋Œ€ํ™”์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ "ํ†ต๊ณผ"๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Babel์—์„œ์™€ ๊ฐ™์ด ES5๋กœ ๋ณ€ํ™˜ํ•  ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๊ณ  ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด babel๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ES5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค!

TypeScript๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ผ๋ถ€ ๋ฌธ์ œ์—๋Š” jsdocs๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

https://github.com/TypeStrong/typedoc

require('pixi.js') ์‹œ src๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—…์ŠคํŠธ๋ฆผ ์ข…์†์„ฑ(์ด์™€ ๊ฐ™์ด ์š”๊ตฌํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?).

"main"์€ ์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ typescript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ๋œ ํŒŒ์ผ(_bundle_ ์•„๋‹˜)์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, TS ํŒŒ์ผ์€ src/ ๋กœ ์ด๋™ํ•˜๊ณ  ๊ฐ ํŒŒ์ผ์„ js/ ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ main์„ ๊ทธ๊ณณ์œผ๋กœ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ชจ๋‘ ๋ฌถ์–ด dist/ ๋˜๋Š” w/e์— ๋„ฃ์Šต๋‹ˆ๋‹ค. npm ํŒจํ‚ค์ง€๋Š” js/tsd ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ TS ์†Œ์Šค๋Š” ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋…ผ์˜ ๊ฐ€๋Šฅ).

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ES6์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜๋ฉด TypeScript๋ฅผ ์ฝ”๋“œ๋ฒ ์ด์Šค ํ˜„๋Œ€ํ™”์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ "ํ†ต๊ณผ"๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Babel์—์„œ์™€ ๊ฐ™์ด ES5๋กœ ๋ณ€ํ™˜ํ•  ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๊ณ  ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ TypeScript 2.0์— ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/Microsoft/TypeScript/wiki/What 's-new-in-TypeScript#include-built-in-type-declarations-with---lib

Symbol , Map ๋“ฑ๊ณผ ๊ฐ™์€ ์œ ํ˜• ์ •์˜๋ฅผ ๊ฐ–๊ธฐ ์œ„ํ•ด ES5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ES6์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ @englercj ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์‚ฌ์šฉ ์ค‘์ธ ์ปดํŒŒ์ผ๋Ÿฌ์— ๊ด€๊ณ„์—†์ด ์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ๋œ ํ›„ shim์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Babel์€ IE9์šฉ Symbol ํด๋ฆฌํ•„์„ ์ž๋™์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด babel๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ES5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค!

Pixi์˜ ๊ฒฝ์šฐ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ์˜ˆ, Babel ์‚ฌ์ „ ์„ค์ •์„ ์ฒด๋ฆฌ ์„ ํƒํ•˜์—ฌ ๋ณ€ํ™˜ํ•  ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ES6์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋…ธ๋“œ 6, Electron 1 ๋“ฑ์—์„œ ์ตœ์ฒจ๋‹จ V8 ๊ธฐ๋Šฅ๋งŒ ์ง€์›ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ง ํฅ๋ฏธ๋กœ์šด ์—ญ์„ค์ž…๋‹ˆ๋‹ค. ES6์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜์„ธ์š”. ๊นจ๋—ํ•˜๊ณ  ์‚ฌ๋ž‘์Šค๋Ÿฝ๊ณ  ํ˜„๋Œ€์ ์ธ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›/๋‚ด๋ถ€์ ์œผ๋กœ ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 1995๋…„์ฒ˜๋Ÿผ ํŠธ๋žœ์ŠคํŒŒ์ผํ•˜๋ฉด ๊ทธ ํž˜๋“  ์ž‘์—…์ด ๋ชจ๋‘ ํŒŒ๊ดด๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ณดํŽธ์ ์ด๋ฉฐ TS ๋˜๋Š” Pixi์™€ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ์ด์ƒํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ–ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

@photonstorm ๋ถˆํ–‰ํ•œ ์•„์ด๋Ÿฌ๋‹ˆ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ž ES6 ๋ฐ ES5 ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ์ „์ž์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ฑ์— ๋Œ€ํ•ด ES6 ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ํ† ๋ก ์— ๋›ฐ์–ด๋“ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. :) ์‚ฌ๋žŒ๋“ค์ด TS๋ฅผ ES6์œผ๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผํ•œ ๋‹ค์Œ Babel์„ ์‚ฌ์šฉํ•˜์—ฌ ES5๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผํ•˜๋Š” ๊ฒƒ์„ ๋ดค์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ธฐ๋Šฅ์ด ํŠธ๋žœ์ŠคํŒŒ์ผ๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์•„์ฃผ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‚˜์š”?

๋˜ํ•œ ์ฃผ๋ณ€์— (๋˜ ๋‹ค๋ฅธ...) ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์—ฌ๋Ÿฌ ์ถœ๋ ฅ์˜ ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ•จ๊ป˜ ๊ฝค ๋งค๋„๋Ÿฌ์šด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
http://rollupjs.org/ ES6/ES2015 ๋ชจ๋“ˆ ๊ตฌ๋ฌธ์—์„œ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ž˜์— ์ฆ๋ช…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ๊ฝค ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Typescript๋กœ ์ž‘์„ฑ๋œ PIXI์— ๋Œ€ํ•ด +1์ž…๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ์œ ํ˜•์€ ์ด์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์— ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด :)

RollUp์€ ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋ฌด๋ฅผ ํ”๋“œ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. bubel(babel ๋Œ€์‹ )๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง _์ •๋ง_ ๋น ๋ฅธ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋งŽ์€ TS ์‚ฌ๋ž‘์„ ๋ณด๋Š” ๊ฒƒ์ด ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ 1๋…„ ์ „์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. :) ES2015๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๊ณ ๋ คํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@photonstorm ์€ bubel์„ ์ฐพ์ง€ ๋ชปํ–ˆ์ง€๋งŒ "buble"์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ์˜คํƒ€. http://buble.surge.sh/

BubleTape๋Š” ์ด๋ฅผ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. https://github.com/snuggs/buble-tape

#2936 ๋ฉค๋ฒ„๋“ค์ด ๋ฌธ์„œ๋ฅผ ํฌ๊ธฐํ•œ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ฌ๊ธฐ ์—๋Š” ๋…ธ์ถœ๋œ ๋ฉค๋ฒ„๊ฐ€ 25๊ฐœ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค .

@memberof ์ง€๊ธˆ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@staff0rd ์•„์ง ์ •๋ฆฌ ์ค‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ์•ˆ์ •ํ™”๋˜๋ฉด ๋ฌธ์„œ ์ •๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” jsdoc ๋ฒ„์ „์— ES6 ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋นจ๋ฆฌ ์ฒญ์†Œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ES6์ด dev ๋กœ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์™€์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ง€๊ธˆ์€ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰