์๋ ํ์ธ์ pixi ๊ฐ๋ฐ์์ ๋๋ค!
์ด PR #2936(@leonardo-silva์๊ฒ ์ธ์นจ) ๋๋ถ์ ์ฐ๋ฆฌ๋ Pixi.js์ ์ฝ๋ ๊ธฐ๋ฐ์ ES6์ผ๋ก ๋ณํํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ ์์ํ์ต๋๋ค. ์ด ์ ๊ทธ๋ ์ด๋์ ๋ชฉ์ ์ ๋ฏธ๋์ ๋๋นํ๊ณ Pixi.js๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์์ค๋ ES6์ด์ง๋ง Babel์ ์ฌ์ฉํ์ฌ ES5 ํธํ JavaScript๋ก ๊ณ์ ๋น๋ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฅ๋์ ES6+ ๋น๋๋ฅผ ์ ๊ณตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ ํ์ ๋ณ๊ฒฝ์ ๊ธฐ์กด PR ๋ฐ ๊ฐ๋ฐ์ ๋ฐฉํด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ด๋ ต๊ณ ์คํํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์ด์์ ์ผ๋ก๋ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์์ ํ์ ๋๋ฌํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋น์ ์ ๋์์ด ํ์ํฉ๋๋ค!
๋์์ด ํ์ํ ๋ ์ ๋ง ์ ์ฉํ ๋ช ๊ฐ์ง ์ฌํญ์ด ์์ต๋๋ค.
const
, ๋ฑ๋ฑํ ํ์ดํ ๊ธฐ๋ฅ ๋ฐ ์ ์ ๊ฒํฐ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๊ธฐ ์ํด ์ถ๊ฐ PR์ ์ฐพ๊ณ ์์ต๋๋ค.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
let๊ณผ const๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ๊ฒฝ๋ก๋ก ์ด๋ํ์๊ฒ ์ต๋๊น? ๊ธฐ๋ณธ๊ฐ์ const์ด๊ณ ์ฐธ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ์์ฑ์๋ง let์ ์ฌ์ฉํฉ๋๋ค.
๋๋
๊ธฐ๋ณธ๊ฐ์ let์ด๊ณ ๊ฐ๋ฐ์์๊ฒ ๋ ๋ง์ ํํธ๋ก const๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ ๋ ์ง์งํฉ๋๋ค. ์ด๊ฒ์ ๋ณ๊ฒฝํ์ง ๋ง์ญ์์ค.
์ด์ ์ต์ . ๊ธฐ๋ณธ๊ฐ์ const๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๋ด๋ถ vars๋ฅผ let์ผ๋ก ๋ณํํ๊ณ ๋ช ๋ฐฑํ ๋ฒ์ ์ง์ ๋ฌธ์ ๋ฅผ ์์ ํ์ผ๋ฉฐ var๋ฅผ jshint์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ํ์ฉํ์ง ์์์ต๋๋ค. const๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํจ์ค๊ฐ ํ์ํฉ๋๋ค.
๋ด๊ฐ ์ถ์ฒํ๊ณ ์ถ์ ๊ฒ๋ค:
const
๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง let
๋ฅผ ์ฌ์ฉํ ์ฅ์์ ๋ํด ๋ถํํฉ๋๋ค. const์ ๋ํด ์์ ํด์ผ ํ๋ ๋ชจ๋ ์์น๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.@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
๋ฅผ ์ฝ๊ณ ์ธ ์ ์๊ฒ ๋์ด ํจ์ฌ ๋ ์ข์ต๋๋ค!
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๋ณด๋ค ๋น ๋ฅธ ๊ฒ ๊ฐ๋์?
์กฐ์ฌํ ๊ฐ์น๊ฐ ์์ต๋๊น?
์ด๋ฌํ ํ ์คํธ๋ ์ค๋๋์์ผ๋ฉฐ babel์ ๋์จํ๊ฒ ์คํํ์ง ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ๋ง์ ๊ฒฝ์ฐ typescript๊ฐ ๋ ๋ค๋ณด๋ค ๋น ๋ฅด๋ค๊ณ ์ฃผ์ฅํ ์๋ ์์ต๋๋ค. :)
์ด ์ฃผ์ ์ฌ์์ฑ/์ ์์ ์ผ๋ถ๋ก TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. TypeScript์ ๋ํ ๋ช ๊ฐ์ง ์์ :
์ด๊ฒ์ด ์ฌ์ด ์ผ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ฝ๋ ๊ธฐ๋ฐ๊ณผ ์ปค๋ฎค๋ํฐ์ ํฐ ์ด์ ์ ๊ฐ์ ธ์ฌ ์ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๊ฑด๋ฐฐ!
@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
๋ก ๋ณํฉ๋์์ต๋๋ค. ๋์์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๊ฒ์ ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค!
์ง๊ธ์ ๋ซ์ต๋๋ค.
์ด ์ค๋ ๋๋ ๋ซํ ํ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ด๋ จ ๋ฒ๊ทธ์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ์ฃผ์ ์ฌ์์ฑ/์ ์์ ์ผ๋ถ๋ก TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. TypeScript์ ๋ํ ๋ช ๊ฐ์ง ์์ :
์ด๊ฒ์ด ์ฌ์ด ์ผ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ฝ๋ ๊ธฐ๋ฐ๊ณผ ์ปค๋ฎค๋ํฐ์ ํฐ ์ด์ ์ ๊ฐ์ ธ์ฌ ์ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๊ฑด๋ฐฐ!