๋ด ์ฌ์ดํธ์ ํน์ ํ์ด์ง์ Highcharts๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํ๊ธฐ ์ํด RequireJS๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ๋ highcharts-more ๋ฐ ์ถ๊ฐ ๋ชจ๋์ ๋ก๋ํ๋๋ก shim์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค. ๋ฉฐ์น ์ Highchart CDN์ ๋ฒ์ 6.1.2 ์ ๋ฐ์ดํธ๋ถํฐ ์ด์ highcharts-more ๋ฐ ๋ชจ๋์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋ํ์ง ๋ชปํฉ๋๋ค.
highcharts-more ๋ฐ ๊ธฐํ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
ํ์ผ์ ๊ฐ์ ธ์์ง๋ง arearange
๋ํ ์ค๋ฅ ์ฝ๋ 17 ์ ์ ์๋ ์ฐจํธ ์ ํ ๋ฐ ๊ธฐํ ์ด์ํ ๋์์ผ๋ก Highcharts ์ด๊ธฐํ์ ์คํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ทน์ง๋ฐฉ ์ฐจํธ๋ ๊ทน์ง๋ฐฉ์ด ์๋๋๋ค.
์ค์ ํ์ผ์ ๊ฐ์ ธ์ค์ง๋ง ์ด๋ค ์ด์ ๋ก ์ธํด ๋ ์ด์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ค๋ช
ํ์ง ์์ต๋๋ค.
Highcharts 6.1.1๋ก ์์
๋ฐ๋ชจ: http://jsfiddle.net/3kpazfw4/
CDN์ผ๋ก ์คํจํ ๋ฐ๋ชจ: http://jsfiddle.net/6zypqedn/
ํ์ด์ฐจํธ 6.1.2
ํฌ๋กฌ 68.
์๋ ํ์ธ์ @jee7
์ด ๋ฌธ์ ๋ฅผ ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋น์ ์ด ์ณ์ต๋๋ค. ๋ญ๊ฐ ์๋ชป๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ์ธํ ๊ฒ์ ๋๋ค.
๋ด๋ถ ์ฐธ๊ณ ์ฌํญ:
@oysteinmoseng CDN์ ๋์ผํ ๋ฐ๋ชจ:
์ฑ ์ ์๋ ์ปค๋ฐ: https://github.com/highcharts/highcharts-assembler/commit/0d223359731079077a5a6ad693b53655e8352fc2
6.1.2
Highcharts๋ AMD ๋ก๋ฉ์ ์ง์ํ๋ฏ๋ก shimming์ด ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ AMD ๋ก๋ฉ์ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ชจ๊ฐ ์คํจํ๋ ์์ธ์
๋๋ค.
RequireJS๋ก Highchart๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ ๋ฅผ ์ฐธ์กฐ
์ง๊ธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ๊ฒ์ด์ง๋ง ์ถ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์ ๋ ์ง ๋ค์ ์ฌ์ญ์์ค.
๋ต๋ณ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค, ์ ๊ฐ ์ฒ๋ฆฌํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด ์ฌ์ดํธ์ ํน์ ํ์ด์ง์ ๋ก๋๋๋ ์์ฒด RequireJS ๋ชจ๋์ด ๋ง์ด ์์ต๋๋ค. ๊ทธ ์ค ์ผ๋ถ๋ Highcharts๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด Highcharts ์ด๊ธฐํ๋ฅผ ๊ธฐ๋ณธ requirejs() ํธ์ถ์ ๋ฃ๊ณ ์ถ์ง ์์ต๋๋ค(๊ทํ์ ์์์ ๋ณผ ์ ์๋ฏ์ด). ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฌ์ฉํ์ง ์๋๋ผ๋ ํญ์ ๋ชจ๋ ํ์ด์ง์ ๋ก๋๋ฉ๋๋ค. ์ด์ ์๋ shim์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ ํ๋์ highcharts ์ข ์์ฑ์ ํฌํจํ ์ ์์๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ต๋๋ค.
๊ทธ๋์ ๋ด ์ฒซ ๋ฒ์งธ ์ ๊ทผ ๋ฐฉ์์ ์๋ก์ด ์ข ์์ฑ ์ฃผ์ ์ ๋ด ๋ชจ๋ ์ค ํ๋์ ๋ฃ๊ณ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๊ฐ์ ๋ชจ๋์ ๋ํด ๋ก๋๋๋ ์ค์ Highcharts ๋ชจ๋์ ๋ ์ ์ ์ดํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Highcharts๋ฅผ ์ฌ์ฉํ๋ ๊ฐ ๋ชจ๋ ์์ ๊ทธ๋ ๊ฒ ๊ธด ์ข ์์ฑ ์ฃผ์ ์ฝ๋๋ฅผ ๋ฃ๊ณ ๋ณต์ ํ๊ณ ์ถ์ง ์์ต๋๋ค... ๊ทธ๋์ ๊ฒฐ๊ตญ Highcharts ๊ตฌ์ฑ๋ง ์ํํ๋ ์์์ ๋ค๋ฅธ ๋ชจ๋์ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ ๋ฒ Highcharts๋ฅผ ๋ด ๋ชจ๋์ ํ ๋ฒ๋ง ์ฝ์ ํ ์ ์์ต๋๋ค.
์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@mbrodala๊ฐ ์ ์ํ ๋๋ก ํจํด์ ๋ํ ํ ๋ก ์ ์ํด ์ด๊ฒ์ ๋ค์ ์ฝ๋๋ค.
์ด๊ฒ์ ๋ค์ ์์ํ๋ ค๋ฉด #8916์ ๋ด ์๊ฒฌ:
๋ฐ๋ผ์ ์ด๊ฒ์ ์ดํดํ๋ ๊ฒ์ ํนํ ์ฌ์ฉ์๊ฐ highcharts๋ผ๋ ์ด๋ฆ์ ๋ชจ๋์ด ์๋ ๋ค๋ฅธ ๊ฒ์ ๋ก๋ํ๊ณ ์ด๋ฅผ Highcharts๋ก ๋ค์ํ Highcharts ๋ชจ๋์ ์ ๋ฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ผ๋ง๋ ์์ฃผ ํ์ํ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ์ฌ ์ํ๊ฐ ํผ๋์ค๋ฝ๊ณ ๋ถ์์ ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ RequireJS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ตญ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํผํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ์ด๊ฒ์ ๊ฐ์ ๋ก ์ ์ฉํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ํ์ ํ ์ ์์ต๋๋ค.
Highcharts๋ฅผ ํตํฉํ ๋ค๋ฅธ AMD ์ฌ์ฉ์์๊ฒ ์ํฌํ๋ก์ ๋ํด ๋ฌป๊ณ ์ถ์ต๋๋ค. ํนํ ํ์ฌ์ ์ ์ฐ์ฑ์ด ์ ๋ง๋ก ํ์ํ๊ฑฐ๋ ๋ชจ๋ Highcharts ๋ชจ๋์ด Highcharts
๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๊ธฐ ์ํด highcharts
๋ผ๋ ๋ชจ๋์ด ํ์ํ๋ค๋ฉด ๋ชจ๋ ์ฌ๋์ด ๊ด์ฐฎ์ ๊ฒ์
๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ํ ๋ชจ๋ ํ์ด์ง์ ๋ชจ๋ ์ถ๊ฐ Highcharts ๋ชจ๋์ด ํ์ํ์ง ์์ ์๋ ์๋ค๋ ์์ด๋์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ฒ์คํธ ํ๋กฏ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ ์คํธ๋ฆผ๊ทธ๋ํ ํ๋กฏ์ ๋ณด์ฌ์ฃผ๋ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ ํ์ด์ง ๋ชจ๋์ ์ ๋ฒ์คํธ ๋ฐ ์คํธ๋ฆผ๊ทธ๋ํ ํ๋กฏ ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ๋ก๋ํ ํ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด๋ค ํ์ด์ง๊ฐ ์ด๋ค ์ถ๊ฐ Highcharts ๋ชจ๋์ ์ฌ์ฉํ๋์ง ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌ์ฑํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. shim ๊ตฌ์ฑ์ผ๋ก ๋๋ ๊ฒ์ผ๋ฅด๋ฉฐ ์ฃผ์ Highchart ๋ชจ๋์ ๋ํ ์ข ์์ฑ์ผ๋ก ์ฌ์ฉํ ๋ค๋ฅธ ๋ชจ๋ ๋ชจ๋์ ์ถ๊ฐํ์ต๋๋ค.
์ด์ AMD์ ํจ๊ป ๋๋ ์ฝ๊ฐ ๊ฒ์ผ๋ฅด๋ค. ๋ด ์น์ฌ์ดํธ๋ ์ค์ ๋ก ์ฌ๋ฌ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์น์
์ด๋ผ๊ณ ํฉ์๋ค. ๊ทธ๋ค์ ํ์, ๊ต์ฌ, ๋
ผ๋ฌธ ๋ฐ ๋
ผ๋ฌธ์ผ๋ก ๋ช
๋ช
๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐํ๋ฅผ ์ํด ์ฌ์ฉ์, ์ ๋ฃ ์ฌ์ฉ์ ๋ฐ ๊ด๋ฆฌ์์ ๊ฐ์ ์น์
์ ์๊ฐํ ์ ์์ต๋๋ค. ๋๋ ๋ค๋ฅธ ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์น์
. ๊ทธ๋์ ์ ๊ฐ ํ ์ผ์ ๊ฐ ์น์
์ ๋ํด Highcharts์ฉ์ผ๋ก ๋ณ๋์ AMD ๋ชจ๋์ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก js/modules/student/highcharts
, js/modules/teacher/highcharts
, js/modules/theses/highcharts
๋ฑ์ด ์์ต๋๋ค. ๋ชจ๋ ํน์ ์น์
์ ๋ชจ๋ ํ์ด์ง์์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ Highcharts๋ฅผ ๋ค๋ฅด๊ฒ ๊ตฌ์ฑํฉ๋๋ค. ๋ด ์ด์ ๊ฒ์๋ฌผ์ ์ฐธ์กฐํ์ญ์์ค(์ด๋ค ์ด์ ๋ก ์คํฌ๋ฆฐ์ท์ด ์ด์ ์ ์ฌ๋ผ์ก์ต๋๋ค).
๊ตฌ์ฑ๋ง ๊ฐ์ง๊ณ ๋น์ทํ ์์ ์ ํ ์ ์๋ค๋ฉด ์ข์์ ๊ฒ์ ๋๋ค. ๋ด๊ฐ shim๊ณผ ํจ๊ปํ๋ ๊ฒ์ฒ๋ผ. ๊ทธ๋ฐ ๋ค์ ์ข ์์ฑ ์ฃผ์ ํญ๋ชฉ์ ๋ชจ๋ ์ ์ ๋ด๋ถ๊ฐ ์๋ ๋จ์ผ ๊ตฌ์ฑ ํ์ผ์ ๋ชจ๋ ์ ์งํ ์ ์์ต๋๋ค. ์ค์ ์ฃผ์ ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ํ๋ ์ ์์ต๋๋ค. ์ง๊ธ์ AMD์ ๋ํด ๊ฒฝํ์ด ํ๋ถํ๊ณ ์ต์ํ์ง ์์ง๋ง, ์ ๊ฐ ์ฝ์ ํ AMD ๋ชจ๋์ ๋ํ shim ๊ตฌ์ฑ์ ์์ฑํ๋ ๊ฒ์ ๋์ ์๊ฐ์ ๋๋ค.
๋ฐ๋ผ์ ํ์ฌ Highcharts์ ํน์ ์กฐํฉ์ ๋ก๋ํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ์ง๋ง ๊ธฐ๋ณธ Highcharts ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ํ์ด์ง์๋ 1-2๊ฐ์ JS ํ์ผ๋ง ๋ก๋ํ ์ ์๊ณ 10๊ฐ์ ๋ค๋ฅธ Highcharts ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ํ์ด์ง์๋ ~10๊ฐ์ JS ํ์ผ๋ง ๋ก๋ํ ์ ์๊ธฐ๋ฅผ ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ CDN์์ Highcharts๋ฅผ ๋ก๋ํ ๋ ํฌํจํ๊ณ ์ค๋นํ ๋ชจ๋์ URL ๋งค๊ฐ๋ณ์๋ก ์ง์ ํ๋ ๊ฒ์
๋๋ค. Google์ด Google Fonts์์ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด์ ๊ฐ์ ๊ฒ: https://code.highcharts.com/highcharts?modules=more,sunburst,streamgraph
.
๊ทธ๋ฐ ๋ค์ RequireJS์์ Highcharts์ ๋ค๋ฅธ ๊ตฌ์ฑ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ์ง์ ํ ์ ์๊ณ ์ฌ์ฉ ์ ๊ฐ ๊ตฌ์ฑ์ ๋ํด CDN์์ ๋จ์ผ ํ์ผ๋ง ๋ก๋ํ ์ ์์ผ๋ฉฐ DI๋ฅผ ์ง์ ์ํํ ํ์๊ฐ ์์ต๋๋ค.
๋๋ @mbrodala ๊ทธ์ ๋ง์ ๋์ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ ์ดํดํ๋ ๊ฒ์ ํนํ ์ฌ์ฉ์๊ฐ highcharts๋ผ๋ ์ด๋ฆ์ ๋ชจ๋์ด ์๋ ๋ค๋ฅธ ๊ฒ์ ๋ก๋ํ๊ณ ์ด๋ฅผ Highcharts๋ก ๋ค์ํ Highcharts ๋ชจ๋์ ์ ๋ฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ผ๋ง๋ ์์ฃผ ํ์ํ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ์ฌ ์ํ๊ฐ ํผ๋์ค๋ฝ๊ณ ๋ถ์์ ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ RequireJS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ตญ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํผํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ์ด๊ฒ์ ๊ฐ์ ๋ก ์ ์ฉํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ํ์ ํ ์ ์์ต๋๋ค.
RequireJS๋ฅผ ์ฌ์ฉํ์ฌ Highcharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํฉ๋๋ค. Highcharts
๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๊ธฐ ์ํด ๋จ์ํ highcharts
๋ฅผ ์๊ตฌํ๋ ์ด์ ๋ฐฉ๋ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ์ํ๊ฐ ํผ๋์ค๋ฌ์ธ ๋ฟ๋ง ์๋๋ผ ์ฐ๋ฆฌ์ ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ต์ ๋ฒ์ ์ Highchart๋ก ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ์ ํํ๊ธฐ ๋๋ฌธ์
๋๋ค.
@oysteinmoseng ์ด์ ๊ด๋ จ๋ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@TorsteinHonsi @pawelfus
@tejaspchordiya ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑ ๊ฒฝ๋ก๋ฅผ ์ ํธํ๋ ๊ฒ์ด ๋งค์ฐ ๋ถ๋ช ํ๋ฏ๋ก ๋ค์ ๋ฒ์ ์์๋ ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ชฉํ๋ก ํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ดํด๋ณผ ๊ฒ์ด๋ค.
@oysteinmoseng ์ข์์. ๋ค์ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
@jee7 @mbrodala @tejaspchordiya
๋ค๊ฐ์ค๋ Highcharts v7์์๋ highcharts
๋ชจ๋์ ์์กดํ๋๋ก ๋ชจ๋ ํ์ผ์ ๋ณ๊ฒฝํ ๊ฒ์ด๋ฉฐ ๋ฃจํธ ํ์ผ์ ์ด ๋ชจ๋์ ์ ์ํ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋ชจ๋์ ๋ํ ๋ก๋ ์์๋ ์ฌ์ ํ ์ ํํด์ผ ํฉ๋๋ค. ์๋ํ๋ฉด ๋ชจ๋์ (ํ์ฌ๋ก์๋) ์ ์ญ highcharts
๋ชจ๋์๋ง ์ข
์๋์ด ์๊ณ ๋ค๋ฅธ ๋ชจ๋์ ์ข
์๋ ๋ชจ๋์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ก๋ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
requirejs.config({
paths: {
'highcharts': 'http://code.highcharts.com/highcharts',
'highcharts-exporting': 'http://code.highcharts.com/modules/exporting',
'highcharts-accessibility': 'http://code.highcharts.com/modules/accessibility'
}
});
// Try loading after setting up paths. Note that the loading order has to be correct.
requirejs([
'highcharts',
'highcharts-exporting',
'highcharts-accessibility'
], function (Highcharts, exporting, accessibility) {
Highcharts.chart('container', {
series: [{
data: [1,2,3,4,5]
}]
});
});
์ด์ ๋ํ ์๊ฒฌ์ด ์์ผ๋ฉด ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์๋ ค์ฃผ์ญ์์ค.
@oysteinmoseng Highcharts ์์ค์ ๊ณํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ดํดํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ฅผ ๋ค์ด highcharts-exporting
๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
define(['highcharts'], function(Highcharts) {
// ...
});
๋ฐ๋ผ์ ๋ค์์ ๋ชจ๋ ์๋ฒฝํ๊ฒ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
require(['highcharts', 'highcharts-exporting'], function (Highcharts, exporting) {
// ...
});
require(['highcharts-exporting', 'highcharts'], function (exporting, Highcharts) {
// ...
});
require(['highcharts-exporting'], function (exporting) {
// ...
});
๋ฐ๋ผ์ ๋ชจ๋์ ์ค์ ํ ์์์ ๊ธฐ๋ณธ ๋ชจ๋์ ๋ช ์์ ์ผ๋ก ๋ก๋ํ๋ ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค.
@mbrodala ์ค์ ๋ก ์ด๊ฒ์ด ๋ชจ๋์ ๋ชจ์์ด๋ฉฐ ๋ชจ๋๊ณผ ๊ธฐ๋ณธ ๋ชจ๋์ ๋ก๋์ ๋ํด ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ก๋ ์์๋ ์๋ก ์์กดํ๋ ์ฌ๋ฌ Highcharts ๋ชจ๋์ ๋ก๋ํ ๋ ์ ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด accessibility
๋ชจ๋์ exporting
๋ชจ๋์ ์ข
์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ด ์์ ์์ Highcharts ๋ชจ๋ ํ์ผ์ ํด๋น ์ ๋ณด๋ฅผ ํฌํจํ์ง ์์ผ๋ฏ๋ก ์์๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํด์ผ ํฉ๋๋ค.
์, ์ด์ ๋ฌด์จ ๋ง์ธ์ง ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ require()
์ธ๊ธ๋ ๋ชจ๋์ ์์๊ฐ ๋ก๋ฉ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์๋ํ๋์ง ํ์ ํ ์ ์์ต๋๋ค. ๋ชจ๋์ ์์ ์์ด ๋ก๋๋๊ณ ์ข
์ ํญ๋ชฉ์ ๋ชจ๋ ์ข
์ ํญ๋ชฉ์ด ๋ก๋๋๋ ์ฆ์ ๋ก๋๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ด๋ถ ์ข
์์ฑ์ ๊ณ ๋ คํ์ฌ ์๋์ผ๋ก ๋ชจ๋์ ์ ๋ ฌํ๋๋ผ๋ ๋ก๋ ๋ฌธ์ ๊ฐ ์์๋ฉ๋๋ค.
์ฃผ์ด์ง ์์์ ['highcharts', 'highcharts-exporting', 'highcharts-accessibility']
๊ฐ ํ์ํ ๊ฒฝ์ฐ highcharts-exporting
๊ฐ highcharts-accessibility
์ ์ ๋ก๋๋๋ค๋ ๋ณด์ฅ์ ์์ผ๋ฉฐ _my_ ๋ชจ๋๋ง ์ด๋ฌํ ๋ชจ๋๋ณด๋ค ๋จผ์ ๋ก๋๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ highcharts-accessibility
๊ฐ ์คํ๋์๋ง์ ์๋์ผ๋ก ๋ง๋ฒ์ ์ํํ๋ค๋ฉด highcharts-exporting
๊ฐ ์ด๋ฏธ ๋ก๋๋์ด ์๋ค๊ณ ์์กดํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ข
์์ฑ์ ๋ช
์์ ์ผ๋ก ์ ์ธํด์ผ ํฉ๋๋ค.
@mbrodala ๋ชจ๋ ๋ก๋ ์์์ ๋ํด ์ง๋ฌธ์ด ์์ต๋๋ค.
requirejs์ ํจ๊ป shim ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๊น?
์ ์ด๊ฑด ๋ชฐ๋๋ค์ ใ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ถํํ๋ ๊ทธ๊ฒ์ ์ ์ฌ์ ์ธ ์ผ์คํ ํผ์ ๋๋ค. ๋ชจ๋์ ์ข ์์ฑ์ ์ถ์ ํ๋ ์์คํ ์ ๋ง๋๋ ๊ฒ์ด ์งง์ ์๊ฐ ์์ ํ ์ ์๋ ์ผ์ ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด ๋ณ๊ฒฝ์ Highcharts v7.1๋ก ์ฐ๊ธฐํด์ผ โโํ ๊ฒ ๊ฐ์ต๋๋ค. ์ ํ์ ์ข ์์ฑ์ ๊ฐ๋ (ํน์ ๋ก๋ ์์๊ฐ ํ์ํจ)๊ณผ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
v7.0 ์ดํ์ ์ด ๋ฐฑ์ ์ ์ ํํ๊ณ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ ๋ณผ ๊ฒ์ ๋๋ค.
ํธ์งํ๋ค:
shim์ ์ฌ์ฉํ๋ ์ ์ฌ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ํ์ฌ ๊ตฌํ๋ณด๋ค ์ฌ์ด์ง ๋
ผ์ํ ์ ์์ต๋๋ค.
@tejaspchordiya ๋ฌด์์ ์ผ๋์ ๋๊ณ ๊ณ์ญ๋๊น? ๋ชจ๋์ ๋ํ ๋ก๋ ์์๋ฅผ ์ ์ฉํ๋ ์ต์ ์ ์์ง ๋ชปํฉ๋๋ค.
shim ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ 6.1.2 ์ด์ ์ ์๋ฃจ์ ์ผ๋ก ๋๋์๊ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด๊ฐ ์ดํดํ๋ ํ AMD ๋ชจ๋์ shim๊ณผ ์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ shim์ ๋น AMD ๋ชจ๋์ฉ์ ๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์ ์๋ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ๋จ์ผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๋ Highcharts์ ํน์ ๊ตฌ์ฑ์ ์ํ ๋ ์ฌ์ ํ ๊ณ ์ ํ ์ฌ์ฉ์ ์ ์ ๋ชจ๋์ ์ ์ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์, ๋ชจ๋์ด ๋น๋๊ธฐ์์ผ๋ก ๋ก๋๋๋ฏ๋ก ์์๋ ์์์ ์
๋๋ค.
์ข
์์ฑ์ Highcharts์ ๋ชจ๋ ์ ์์์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ์ ์ ์กฐ๊ฑด ์ข
์์ฑ์ด ์ฌ๋ฐ๋ฅธ ์์๋ก ๋ก๋๋๋๋ก ๋ณด์ฅํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. highcharts-more
๋ชจ๋์ด highcharts
๋ชจ๋ ๋ฑ์ ์ข
์๋๋ค๋ ๋ชจ๋ ์ ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
๋ชจ๋์ด ์์๋๋ก ์ข ์์ฑ์ ๊ฐ๋๋ก 7.1์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฌ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ด๋ณด๋ด๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
define(['highcharts'], function(Highcharts) {
// ...
});
์ข ์ ์คํ๋ผ์ธ ๋ด๋ณด๋ด๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
define(['highcharts', 'exporting'], function(Highcharts, exporting) {
// ...
});
์ด ์๋ฆฌ๊ฐ ๋ง์ต๋๊น?
๋ง๋ ๊ฒ ๊ฐ์ง๋ง ๋ชจ๋ ๋ชจ๋์ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๊ณ ์ถฉ๋์ ํผํ๋ ค๋ฉด exporting
๋์ highcharts-exporting
๋ฅผ ์ ์ํฉ๋๋ค.
์ฐธ๊ณ : ๋ํ ๋ช ๋ช ๋ ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ชจ๋์ ๋จ์ผ ํ์ผ๋ก ๋ณํฉํ์ฌ ์๋ฒ ์์ฒญ์ ์ค์ผ ์ ์๋์ง ํ์ธํ์ญ์์ค.
define('highcharts-offline-exporting', ['highcharts', 'exporting'], function(Highcharts, exporting) {
// ...
});
์ค์ ๋ก ์ด๊ฒ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค . ๋์ ์ด๊ฒ์ RequireJS ์ตํฐ๋ง์ด์ ์ ๋งก๊ฒจ์ผ ํฉ๋๋ค.
์ด๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ต์ ํ ๋๊ตฌ์ ์ํด ์์ฑ๋ฉ๋๋ค. ๋ชจ๋์ ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์์ง๋ง ๋ชจ๋์ ์ด์์ฑ์ด ๋จ์ด์ง๋๋ค. ํ์ผ์ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ์ด๋ฆ์ผ๋ก ์ฝ๋ฉํ๋ ๊ฒ์ ํผํ๊ณ ์ต์ ํ ๋๊ตฌ๊ฐ ๋ชจ๋ ์ด๋ฆ์ ํ์ฐ๋๋ก ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ต์ ํ ๋๊ตฌ๋ ๋ธ๋ผ์ฐ์ ์์ ๋ ๋นจ๋ฆฌ ๋ก๋ํ ์ ์๋๋ก ๋ ์ด์์ ๋ชจ๋์ ํ์ผ์ ๋ฒ๋ค๋ก ๋ฌถ์ ์ ์๋๋ก ์ด๋ฆ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
@mbrodala ํฅ๋ฏธ define(['highcharts', 'highcharts-exporting'], ...)
. ๋ด๊ฐ ๊ทธ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ชจ๋์ ๋ํ ๊ด๋ จ ํ์ผ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ ์ํด์ผ ํ๋ ์ฌ์ฉ์์๊ฒ ๋ถ๋ด์ ์ค ๊ฒ์
๋๋ค.
requirejs.config({
paths: {
'highcharts': 'highcharts',
'highcharts-exporting': 'modules/exporting',
'highcharts-accessibility': 'modules/accessibility'
}
});
๋ง์ต๋๋ค. ๋งค์ฐ ์ฅํฉํ ๋ฒ์ ์์๋ ์ด๊ฒ์ด ๊ฐ ๊ธธ์
๋๋ค. ๋ฌผ๋ก ์ผ๋ฐ์ ์ผ๋ก RequireJS๊ฐ baseUrl
์ฌ์ฉํ์ฌ ๋ชจ๋ Highcharts ๋ชจ๋์ ์๋์ผ๋ก ํด๊ฒฐํ ์ ์๋๋ก ํ๋ ๋ฐฉ์์ผ๋ก ์์ฐ์ ๋น๋ํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ Highcharts๋ ํ ์ผ์ด ์์ต๋๋ค. ;-)
๋ด๋ถ ํ ๋ก ํ ์ฐ๋ฆฌ๋ ๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์ ํ๋ ๋ค์ ์ ์์ ์ฐฉ์ํ์ต๋๋ค.
// Example of modules/offline-exporting.src.js
define(
'highcharts/modules/offline-exporting',
['highcharts', 'highcharts/modules/exporting'],
function (Highcharts) {
...
}
)
์ด์ ์ ์๊ณผ ๋ฌ๋ฆฌ ๋ชจ๋ ์ด๋ฆ์ ์ง์ ํ๋ ค๋ ์ด์ ๋ ๋ชจ๋์ด ์ฌ๋ฌ ๋ฒ ๋ก๋ ๋ฐ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ์ ์ค์ ํ๋ ๋ฐ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
require.config({
packages: [{
name: 'highcharts',
main: 'highcharts'
}],
paths: {
// Change this to your server if you do not wish to use our CDN.
'highcharts': 'https://code.highcharts.com'
}
});
๋ํ Highcharts ์ธ์คํด์ค์์ ๋ชจ๋ ํฉํ ๋ฆฌ ํจ์๋ฅผ ์คํํ๊ณ ์์ ๋ ์ธ์คํด์ค๋ฅผ ๋ฐํ๋ ๋ชจ๋์ ์์ฑ์ผ๋ก ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
require([
'highcharts/modules/exporting',
'highcharts/modules/accessibility'
// This function runs when the above files have been loaded.
], function ({ Highcharts }) {
// Create a test chart.
Highcharts.chart('container', {
series: [{
data: [1,2,3,4,5]
}]
});
});
์ด์ ํจํด ๋์ :
require([
'highcharts',
'highcharts/modules/exporting',
'highcharts/modules/accessibility'
// This function runs when the above files have been loaded.
], function (Highcharts, ExportingModule, AccessibilityModule) {
// We need to initialize module files and pass in Highcharts.
ExportingModule(Highcharts);
// Load exporting before accessibility.
AccessibilityModule(Highcharts);
// Create a test chart.
Highcharts.chart('container', {
series: [{
data: [1,2,3,4,5]
}]
});
});
@bre1470 ๊ณผ @oysteinmoseng์ด ์ฌ๊ธฐ์์ ์๋ชป๋์๊ฑฐ๋ ์ด ์๊ฒฌ์์ ๋ญ๊ฐ๋ฅผ ๋์น ๊ฒฝ์ฐ ์ ๋ฅผ ์์ ํด ์ฃผ์ธ์.
์ด ์ ์์ ๋ํ ์๊ฒฌ์ ์์ ๋กญ๊ฒ ๋ณด๋ด์ฃผ์ญ์์ค.
๋ชจ๋์ ์ด๋ฆ์ ์ง์ ํ์๋ฉด - ์ด๊ฒ์ด ๋ ผ๋์ด ๋๋ ์ด์ ๋ ๋ชจ๋์ด ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์์ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋์ด ์ข ์ ๋ชจ๋์ ๋ก๋ํ ์ ์๋๋ก ๊ตฌ์กฐ๋ฅผ ๊ณ ์ ํด์ผ ํ๋ฏ๋ก ์ด๋ฅผ ํ์ฉํ์ง ์์์ผ ํฉ๋๋ค.
@oysteinmoseng
์ฌ์ค, ์ ์ด๋ ๋ด ํ
์คํธ์์๋ ๋ค์๊ณผ ๊ฐ์ด ํจํค์ง์ ๋ชจ๋์ ๋ค์ ๋งคํํ ์ ์์ต๋๋ค.
require.config({
packages: [{
name: 'highcharts',
main: 'highcharts'
}],
paths: {
'highcharts': 'https://code.highcharts.com'
'highcharts/modules/exporting': 'http://code.highcharts.local/modules/exporting'
}
});
์ด๋ ๊ฒ ํ๋ฉด ๋ฐ๋ก ์ด ํด๊ฒฐ๋ฉ๋๊น?
์ด ๋ฌธ์ ๊ฐ ์ข
๋ฃ๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ ๋ Highchart 7.1.1์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ ์ธก ๋ชจ๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์๊ตฌํ ์ ์์ต๋๋ค.
Requirejs ๊ตฌ์ฑ:
map: {
'*': {
//charts: 'js/highcharts' <-- I also tried this one
}
},
paths: {
charts: 'js/highcharts'
},
shim: {
charts: {
exports: 'Highcharts',
deps: ['jquery']
}
}
ํ์ผ์ด ๋ด ๋ธ๋ผ์ฐ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ด ๋ชจ๋์์๋ ์ ์๋์ง ์์ต๋๋ค.
define([
'jquery',
'charts'
], function ($, charts) {
console.log(charts); //Undefined
console.log(Highcharts); //Throws an error "Highcharts not defined"
์ฐธ๊ณ : js/highcharts
๋ node_modules/highcharts/highcharts.js
๊ฐ๋ฆฌํต๋๋ค.
์ด๋ค ์์ด๋์ด๋ผ๋?
@vincentwinkel Highcharts๋ ์ด์ AMD๋ฅผ ์ง์ํ๋ฏ๋ก shim ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค. ๋์ ์์ ์ค๋ช ์ ์ค๋ช ๋ ๋๋ก Highcharts ํจํค์ง๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์ ๋ ์ง ์ง์ ํ ์
map
/ path
shim
์๊ฑฐ๋ ์๋ ๋ชจ๋ ์กฐํฉ์ ์๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค.
Highcharts 6.1.1์ ์ฌ์ฉํด ๋ณด์๋๋ฐ shim
์์ด ์ ๋๋ก ์๋ํฉ๋๋ค.
๋ฐ๋ผ์ ์ ์๊ฐ์๋ Highcharts 7.1.1์ ํ์คํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
[ํธ์ง] ๊ฐ์ฌํฉ๋๋ค. ์์ ์ ์์ ํ์ธํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋ง์ํ์ ๊ฒ์ฒ๋ผ AMD๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ ์ถ๊ฐ ๊ตฌ์ฑ์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์,
๋๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋๋ก ๋ง๋ค์์ต๋๋ค.
require.config({
packages: [{
name: 'highcharts',
main: 'highcharts'
}],
paths: {
// Change this to your server if you do not wish to use our CDN.
'highcharts': 'https://code.highcharts.com'
}
});
์ด๊ฒ์ด ์ด๋ป๊ฒ๋ ๊ณต์ ๋ฌธ์์ ์ผ๋ถ๊ฐ ๋๋๋ก ์์ฒญํด๋ ๋ฉ๋๊น? ๊ทธ๋์ github ๋ฌธ์ ์ ์ฃผ์ 2348445์์ ์ด๊ฒ์ ๊ฐ๋ณ์ ์ผ๋ก ์ฐพ์ ํ์๊ฐ ์์ต๋๊น?
์ด์ ๋ํ ๋ฌธ์๊ฐ ์๋ ์ง์ง ์ด์ ๋ requirejs ์ธํฐํ์ด์ค๊ฐ ์ค์ ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ผ๋ฉด ์ต๋ํ ๋นจ๋ฆฌ ์๋ ค์ฃผ์ธ์ :-) ์ฐ๋ฆฌ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค!
์๋ ํ์ธ์ @pmorch , ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
ํ์ฌ ๋ก์๋ CDN ์์
Highcharts๋ฅผ ๋ก๋ํ๋ ๋ค์ํ ์คํ์ผ์ ๋ถํํ๋ ํ์ฌ ์ผ๋ฐ ๋ฌธ์์ ๋ฌธ์ํ๋์ด ์์ง ์์ง๋ง ์ด ์ ๋ณด๊ฐ ์ฌ๊ธฐ์๋ ํฌํจ๋๋์ง ํ์ธํ ๊ฒ์ ๋๋ค.
์๋
ํ์ธ์ @pawelfus์
๋๋ค.
github์ ๋ชจ๋ ๋ฌธ์์ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์์ง๋ง 6.1.2 ์ดํ ๋ฒ์ ์์ Highchart ๋ชจ๋์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ ํ ์ดํดํ ์ ์์์ต๋๋ค.
highchart-3d ๋ชจ๋๋ก ์์ ๋ฅผ ๋ง๋ค์์ต๋๋ค. http://jsfiddle.net/3ugb2e1q/
๋ณด์๋ค์ํผ ์ฐจํธ๋ ์ฌ์ ํ ํํํฉ๋๋ค. ๋ฐ๋ฉด ๋์ผํ ์ ์ฌํ ์ฝ๋ https://jsfiddle.net/cf4Lv6u3/ ๋ ์์๋๋ก ์๋ํฉ๋๋ค.
factory(Highcharts)
ํจ์๊ฐ ์คํ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
} else if (typeof define === 'function' && define.amd) {
define('highcharts/highcharts-3d', ['highcharts'], function (Highcharts) {
factory(Highcharts);
factory.Highcharts = Highcharts;
return factory;
});
์ค์ ์ฌ๋ก๋ฅผ ์๋ ค ์ฃผ์๊ฒ ์ต๋๊น?
7.0.3์์ ๋ด๊ฐํ๊ณ ์๋ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
app.js
:
requirejs.config({
baseUrl: '/js',
paths: {
'highcharts': 'https://code.highcharts.com/7.0.3/highcharts.src',
'highcharts-more': 'https://code.highcharts.com/7.0.3/highcharts-more.src',
'highcharts-exporting' : 'https://code.highcharts.com/7.0.3/modules/exporting',
'highcharts-wordcloud' : 'https://code.highcharts.com/7.0.3/modules/wordcloud',
'highcharts-sunburst' : 'https://code.highcharts.com/7.0.3/modules/sunburst',
'highcharts-annotations' : 'https://code.highcharts.com/7.0.3/modules/annotations',
'highcharts-streamgraph' : 'https://code.highcharts.com/7.0.3/modules/streamgraph',
'highcharts-serieslabel' : 'https://code.highcharts.com/7.0.3/modules/series-label',
}
});
ํ์ด ์ฐจํธ์๋ ์ฌ์ด ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ Highcharts์ ๋ํด ์ํ๋ ํน์ ๊ตฌ์ฑ์ ๋ํ ๋ชจ๋์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด modules/highcharts.js
:
define([
'jquery', 'highcharts', 'highcharts-more', 'highcharts-exporting', 'highcharts-serieslabel'
], function(
$, Highcharts, HighchartsMore, HighchartsExporting, HighchartsSerieslabel) {
var HS = function() {
HighchartsMore(Highcharts);
HighchartsExporting(Highcharts);
HighchartsSerieslabel(Highcharts);
};
new HS();
return Highcharts;
});
๋๋ ์๋ฅผ ๋ค์ด modules/somethingElse/highcharts.js
:
define([
'jquery', 'highcharts', 'highcharts-more', 'highcharts-exporting', 'highcharts-wordcloud', 'highcharts-sunburst',
'highcharts-annotations', 'highcharts-streamgraph', 'highcharts-serieslabel'
], function(
$, Highcharts, HighchartsMore, HighchartsExporting, HighchartsWordcloud, HighchartsSunburst,
HighchartsAnnotations, HighchartsStreamgraph, HighchartsSerieslabel) {
var HC = function() {
HighchartsMore(Highcharts);
HighchartsExporting(Highcharts);
HighchartsWordcloud(Highcharts);
HighchartsSunburst(Highcharts);
HighchartsAnnotations(Highcharts);
HighchartsStreamgraph(Highcharts);
HighchartsSerieslabel(Highcharts);
};
new HC();
return Highcharts;
});
๊ทธ๋ฆฌ๊ณ stats.js
์ ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ :
define(['jquery', 'modules/highcharts'], function($, Highcharts) {
var Stats = function(...) {
...
};
Stats.prototype = {
initMyCharts: function() {
$('...').highcharts({
...
});
}
}
return Stats;
});
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด ์ค๋ ๋์์ ์ดํดํ ๋ฐ์ ๊ฐ์ด 7.0.3์ ์ํ ๊ฒ์์ ๋ค์ ํ ๋ฒ ์ฃผ์ํ์ญ์์ค. ๋์ค์ ๋ก๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ด์ ๋ ๋ค์ ๋ค๋ฆ ๋๋ค.
์๋ ํ์ธ์ @sergevic๋ , ๊ถ์ฅ ์ ๊ทผ ๋ฐฉ์์ CDN์์ AMD ๋ชจ๋๋ก Highcharts ๋ก๋์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด์ ๋ฐ๋ผ ์์ ํ์ต๋๋ค .
์๋
ํ์ธ์ requirejs๋ฅผ ์ฌ์ฉํ์ฌ highstock์ ์ข
์์ฑ์ ๋ก๋ํ๋ ๋ฐ ๋์์ ์ฐพ๊ณ ์์ต๋๋ค. ํ์ด์ฐจํธ ํฌ๋ผ์ ๊ฒ์๋จ:
https://www.highcharts.com/forum/viewtopic.php?f=12&t=42874&p=150985#p150985
์ข
์์ฑ์ด ์๋ฒ์์ ์ ๊ณต๋๊ณ URL์ผ ๋ ์ ๋๋ก ์๋ํ๋ ๋์ "์ ์๋์ง ์์" ๋ฌธ์ ์ ์ง๋ฉดํฉ๋๋ค. ์น์ ํ๊ฒ ์กฐ์ธํฉ๋๋ค. ๊ฐ์ฌ ํด์.
์๋ ํ์ธ์ @sina123s ์ ๋๋ค .
Highcharts๋ ์์ฒด ๋ด๋ถ ๋ค์์คํ์ด์ค highcharts
๋ฅผ amd์ ๋ฑ๋กํฉ๋๋ค. ์ด๊ฒ์ ๋ด๋ถ ์ข
์์ฑ์ ๋ก๋ํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด highcharts/modules/stock
๋ ์๋์ผ๋ก ํ์ํ highcharts
๋ชจ๋์
๋๋ค.
์ด๋ highstock
๊ฐ requirejs์ ๋ฑ๋ก๋ ๋ชจ๋์ ์ฐธ์กฐํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ชจ๋์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ highcharts/highstock
id๋ก ๋ฑ๋ก๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ํ CDN์์ AMD ๋ชจ๋๋ก ๋ก๋ ํ์ด์ฐจํธ์ ์ค๋ช ๋ ๊ตฌ์ฑ์ ๋ง๊ฒ ์์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ ํ์ธ์ ์ข ์์ฑ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ฌ ์๋ฒ์ Highcharts ํจํค์ง๊ฐ ์์ง๋ง ๋ชจ๋์๋ highstock.js๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ๋ด VM ๋๋ ํฐ๋ฆฌ์ ์ ์ฅํ์ต๋๋ค. ๋์ผํ ๊ตฌ์ฑ๊ณผ ๊ฐ๋๋ก ์ฝ๋๋ฅผ ์์ ํ๋ ค๊ณ ํ์ต๋๋ค. ํ์ฌ ์ ์๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ ์์น๋ฅผ ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฃ์กํฉ๋๋ค. ํผ๋์ค๋ฝ๊ณ ์ธํฐ๋ท ๊ฒ์์์ ๊ฐ๋ฅ์ฑ์ ์๋ํ์ง๋ง ์๋ฌด๋ฐ๋ ๋๋ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ์๋ง์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
requirejs.config({
ํจํค์ง: [{
์ด๋ฆ: 'ํ์ด์ฐจํธ',
๋ฉ์ธ: 'ํ์ด์ฐจํธ'
}],
๊ฒฝ๋ก: {
jquery: "js/jquery/jquery",
"datatables.net": "js/datatables/js/jquery.dataTables.min",
"datatables.net-css": "js/datatables/css/jquery.dataTables.min",
tippy: "js/tippy.all.min",
fixedHeader: "js/datatables/js/dataTables.fixedHeader.min",
"fixedHeader-css": "js/datatables/css/fixedHeader.dataTables.min",
jquerymin: "js/jquery-1.10.2.min",
colpick: "js/colpick",
colpickcss: "css/colpick",
highstock: "js/highstock"
},
์ฌ: {
"datatables.net": ["jquery", "css!datatables.net-css"],
fixedHeader: ["css!fixedHeader-css"],
colpick: ["css!colpickcss"]
}
});
require.config({
์ฐ์ ์์: ["jquery", "jquerymin", "colpick"]
});
ํ์ํ๋ค([
"jquery", "tippy", "DS/3DXHighcharts/3DXHighcharts", "highstock", "datatables.net", "fixedHeader", "jquerymin", "colpick"],
๊ธฐ๋ฅ(
$, tippy, Highcharts, highstock )
๊ทธ๋ฐ ๋ค์ Highcharts.stockChart()๋ฅผ ์ฌ์ฉํ ๋ ์ ์๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ ํ์ธ์...์ด ์์ ์ ์ํํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
์๋ ํ์ธ์ @sina123s๋ , ๊ทํ์ ์ฝ๋์ ๊ด๋ จ๋ ์์ ๋ฅผ ๋ง๋ค
์๋ ํ์ธ์ @sina123s ์ ๋๋ค .
๋ค์์ ๋ก์ปฌ ์์ค ํด๋์์ Highcharts๋ฅผ ๋ก๋ํ๋๋ก RequireJS๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์์ ๋๋ค. https://codesandbox.io/s/static-jixls
์ด ์์์๋ highstock.js
๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ์ ์ฐํ ์๋ฃจ์
์ highcharts.js
๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ highcharts/modules/stock
๋ฅผ ์ข
์์ฑ์ผ๋ก ๋ก๋ํ๋ ๊ฒ์
๋๋ค.
์ด๋ ์ผ๋ถ ๋ชจ๋์ด highcharts/modules/stock
์ ๋ํ ๋ด๋ถ ์ข
์์ฑ์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ highstock.js
๊ฐ ๊ธฐ๋ณธ์ด๋ฉด ์ด ๊ฒฝ์ฐ ์ผ๋ถ ์ฝ๋๊ฐ ๋ ๋ฒ ๋ก๋๋ฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ ์์ง๋ง ์ฑ์ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๋ถํ์ํ๊ฒ ์ฆ๊ฐํฉ๋๋ค.
์๋
ํ์ธ์ @jon-a-nygaard ์๋ฅผ ๋ค์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ด๊ฐ ์ํ์ ์ด๊ฒ์ ํ
์คํธ ํ ๊ธฐํ๋ฅผ ์ป์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ต ํ ์ ์์์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ด ์ฐจํธ์ ๋ํ ๋ด ์๋ฒ ํด๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ ๋๋ ํ ๋ฆฌ์์ highstock์ ์ฐพ์ง ์๊ธฐ ๋๋ฌธ์ Highstock.js๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ๋๋ ํ ๋ฆฌ ์ค ํ๋์ ๋ฐฐ์นํ๊ณ requirejs.config์์ ์ฐธ์กฐํ๋ ค๊ณ ํฉ๋๋ค. Highcharts ๋๋ highstock๋ง ๋๋ ๋ ๋ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ณ์ ํฌํจํด์ผ ํฉ๋๊น? ๋ด ์์ ์ ๋ถ๋ช
ํ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋ ํ์ธ์ @sina123s
Highcharts v4.0.3์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. v7๋ก ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ์ จ์ต๋๊น?
์ฐธ๊ณ : Highstock with Highcharts v4.0.3์ ์ฃผ๋ฌธํ๋ ค๋ฉด Highstock v2.0.3( ๋งํฌ )์ด ํ์ํฉ๋๋ค. ๋น์์๋ stock
๋ชจ๋์ด ์์์ต๋๋ค.
์๋
ํ์ธ์ ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด๊ฒ์ ์ฐพ์์ต๋๋ค.
๊ทธ๋ฌ๋ highstock ํ์ผ์ ์ฐธ์กฐํ๊ธฐ ์ํด ๋ด ์ฝ๋์์ ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. "DS/SMAHighcharts/Highcharts"๊ฐ ์์ ๋ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ป์ง ๋ชปํ๊ณ ์ ์๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ์์
์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋
ํ์ธ์ @sina123s๋ , ๋ง์ง๋ง ์ง๋ฌธ์ ์ ๋๋ก ์ดํดํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฃผ์ ๋ชจ๋๊ณผ ํจ๊ป Highcharts๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด https://codesandbox.io/s/static-lo70d ์์์ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด Highstock์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ https://codesandbox.io/s/static-jixls ์์์ ๊ฐ์ด ํ ์ ์์ต๋๋ค
๋ ๊ฒฝ์ฐ ๋ชจ๋ require.config
์์ ์ ๊ณต๋๋ paths.highcharts
๋ Highcharts ํ์ผ์ด ์๋ ํด๋๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค. ์ด ํด๋๋ ๋ง์ง๋ง ์ฃผ์์์ DS/SMAVenHighcharts/6.0.7/
์ฒ๋ผ ๋ณด์
๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ตฌ์ฑ์ด ๋ค์๊ณผ ๊ฐ์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
```
requirejs.config({
๊ฒฝ๋ก: {
ํ์ด์ฐจํธ: "DS/SMAVenHighcharts/6.0.7"
}
})
์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ต๋๋ค.
requirejs.config({
๊ฒฝ๋ก: {
....
ํ์ด์ฐจํธ: "DS/SMAVenHighcharts/6.0.7"
},
ํจํค์ง: [
{
์ด๋ฆ: "ํ์ด์ฐจํธ",
// highcharts.js๋ฅผ ๋ฉ์ธ์ผ๋ก ์ค์
๋ฉ์ธ: "ํ์ด์ฐจํธ"
}
]
});
require(["jquery", "tippy", "DS/WAFData/WAFData", "DS/i3DXCompassServices/i3DXCompassServices", "DS/PlatformAPI/PlatformAPI",
"DS/DataDragAndDrop/DataDragAndDrop","DS/LifecycleControls/EditPropDialog", "highcharts", "highcharts/modules/stock"
ํ์ง๋ง ์ด์ ๋ค์๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
RequireJS ์ค๋ฅ ์ ํ: ๋ชจ๋์ ๋ํ "์คํฌ๋ฆฝํธ ์ค๋ฅ": ["highcharts/modules/stock"]
์กํ์ง ์์ ์ค๋ฅ: ์คํฌ๋ฆฝํธ ์ค๋ฅ: highcharts/modules/stock
AmdLoader.js:1 ์กํ์ง ์์ ์ค๋ฅ: ์คํฌ๋ฆฝํธ ์ค๋ฅ: highcharts/highcharts
๊ทธ๋ฌ๋ SMAVenHighcharts/6.0.7/modules/stock.js ๊ฒฝ๋ก๋ ์ ํํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. Highstock ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ด ๋ฌธ์ ๋ฅผ ์ด๋์์ ์ด๋ป๊ฒ ์์ ํด์ผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ์๋์ํค๊ธฐ ์ํด ์ค๋ซ๋์ ๋
ธ๋ ฅํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค.
์ฐธ๊ณ ์ฌํญ: ์ ๋ Dassault Systemes์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ Highchart์์๋ง ์๋ํ ๋ highchart js ํ์ผ๋ง ์ฌ์ฉํ๊ณ ๋ชจ๋์ ๊ณ ๋ คํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๊ณ ์์ง๋ง, ์ด ๊ฐ๋ ์ ๋ด ๋จธ๋ฆฌ์ ์กฐ๊ธ ๋ค์ด์ค์ง ์๋๋ค! ๋ฐ๋ผ์ ์ฌ์ฉ์ ๋ํด ์๋ดํ ์ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์น์ ํ๊ฒ ์กฐ์ธํ์ญ์์ค. ๊ฐ์ฌ ํด์.
์๋
ํ์ธ์ @sina123s , ํ๋ก์ ํธ์ ๋ผ์ด๋ธ ์ฌ์์ฐ์ ์ ๊ณตํ ์ ์์ต๋๊น? ๋ฌธ์ ์ ์์ธ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ ๊ฐ์ธ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ [email protected]์ผ๋ก ๋ฌธ์ํ ์๋ ์์ต๋๋ค
์๋
ํ์ธ์..์ฃ์กํฉ๋๋ค. ํ๋ก์ ํธ์ ๋ผ์ด๋ธ ์ฌ์์ฐ์ ์ ๊ณตํ์ง ๋ชปํ๊ฑฐ๋ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ํฌํจ๋ ์ฝ๋๋ฅผ ๊ณต์ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฒฝ๋ก shim ๋ฑ์ ๊ดํ ์ฝ๋๋ ์๋์ ๊ฐ์ผ๋ฉฐ, ๋ชจ๋ ๋๋ ํ ๋ฆฌ ๋ฐ ๊ธฐํ ํ์ผ์ ์ ์ธํ๊ณ js ํ์ผ๋ง ๋ก๋๋ฉ๋๋ค. :
require.config({
๊ฒฝ๋ก: {
"DS/SMAVenHighcharts": a
},
์ฌ: {
"DS/SMAVenHighcharts": {
๋ด๋ณด๋ด๊ธฐ: "ํ์ด์ฐจํธ"
}
}
})
define("DS/SMAHighcharts/Highcharts", ["../SMAVenHighcharts/6.0.7/highcharts"], function(a) {
๋ฐํ
});
๊ทธ๊ฒ์ด ๋ด๊ฐ ์ถ์ธกํ๋ ์คํฌ๋ฆฝํธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ์
๋๋ค.
๋ํ requirejs.config ๋ถ๋ถ์ ์์ ์ ๊ฐ์ด ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ง ์๊ณ undefined๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
์๋ ํ์ธ์ @sina123s ์ ๋๋ค .
์ด์ ๋ฌธ์ ์ ๊ตฌ์ฒด์ ์ธ ๋ฒ์ ์ ๋ณด์ฌ์ฃผ์ค ๋๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ์ ๊ณตํ ์ ์๋ ์์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด ์์ง ๋ฌธ์ ๋ฅผ ์ค์ด๋ ๋ฐ ์ถฉ๋ถํ ์๊ฐ์ ๋ค์ด์ง ์์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด https://stackoverflow.com/help/minimal-reproducible-example์ ์ฐธ์กฐ
์ ์๊ฐ์๋ @jon-a-nygaard๊ฐ ์ง๊ธ๊น์ง ๋์จ ๊ฒ ์ด์์ด์์ต๋๋ค. ์ด์ ๋น์ ์ด ์ฐ๋ฆฌ์ ๊ทธ์๊ฒ _๋น์ ์ด ๊ฒช๊ณ ์๋ ์ ํํ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋_ ๊ตฌ์ฒด์ ์ด๊ณ ์๊ณ ์ฝ๊ธฐ ์ฌ์ด ์๋ฅผ ์ ๊ณตํ ์ฐจ๋ก์ ๋๋ค.
๋ถ์์ฉ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ์ ๋ ์๊ฒ ๋ง๋ค๊ณ ๋ ์ ๋ฐ ๊ด๋ จ ์๋ ๋ถ๋ถ์ ์ ๊ฑฐํ๋ ๊ณผ์ ์์ ์ค์ค๋ก ๋ต์ ์ฐพ์ ์ ์์ ๊ฒ์ด๋ผ๊ณ 75% ํ์ ํฉ๋๋ค... ์ ๋ง ๋งค์ฐ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ฒด์ ์ผ๋ก ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋๋ค.
๋ํ ๊ฒ์ํ๋ ์ฝ๋ ์กฐ๊ฐ์ ํ์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ญ์์ค. ๊ฒ์ํ ์ฝ๋๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Markdown ๋ง์คํฐ๋ง์ '๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์' ์ฐธ์กฐ
์, ์ด ๋ชจ๋ ์์ ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง ์ฅ๊ธฐ์ ์ผ๋ก ๋ณด๋ฉด ๋์์ ์ค ์ฌ๋์ด ์๋ค๋ฉด ๋์์ค ์ฌ๋์ ์ฐพ๋ ๊ฒ๋ณด๋ค ๋ ์งง์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค... :-)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ @sina123s ์ ๋๋ค .
์ด์ ๋ฌธ์ ์ ๊ตฌ์ฒด์ ์ธ ๋ฒ์ ์ ๋ณด์ฌ์ฃผ์ค ๋๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ์ ๊ณตํ ์ ์๋ ์์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด ์์ง ๋ฌธ์ ๋ฅผ ์ค์ด๋ ๋ฐ ์ถฉ๋ถํ ์๊ฐ์ ๋ค์ด์ง ์์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด https://stackoverflow.com/help/minimal-reproducible-example์ ์ฐธ์กฐ
์ ์๊ฐ์๋ @jon-a-nygaard๊ฐ ์ง๊ธ๊น์ง ๋์จ ๊ฒ ์ด์์ด์์ต๋๋ค. ์ด์ ๋น์ ์ด ์ฐ๋ฆฌ์ ๊ทธ์๊ฒ _๋น์ ์ด ๊ฒช๊ณ ์๋ ์ ํํ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋_ ๊ตฌ์ฒด์ ์ด๊ณ ์๊ณ ์ฝ๊ธฐ ์ฌ์ด ์๋ฅผ ์ ๊ณตํ ์ฐจ๋ก์ ๋๋ค.
๋ถ์์ฉ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ์ ๋ ์๊ฒ ๋ง๋ค๊ณ ๋ ์ ๋ฐ ๊ด๋ จ ์๋ ๋ถ๋ถ์ ์ ๊ฑฐํ๋ ๊ณผ์ ์์ ์ค์ค๋ก ๋ต์ ์ฐพ์ ์ ์์ ๊ฒ์ด๋ผ๊ณ 75% ํ์ ํฉ๋๋ค... ์ ๋ง ๋งค์ฐ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ฒด์ ์ผ๋ก ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋๋ค.
๋ํ ๊ฒ์ํ๋ ์ฝ๋ ์กฐ๊ฐ์ ํ์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ญ์์ค. ๊ฒ์ํ ์ฝ๋๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Markdown ๋ง์คํฐ๋ง์ '๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์' ์ฐธ์กฐ
์, ์ด ๋ชจ๋ ์์ ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง ์ฅ๊ธฐ์ ์ผ๋ก ๋ณด๋ฉด ๋์์ ์ค ์ฌ๋์ด ์๋ค๋ฉด ๋์์ค ์ฌ๋์ ์ฐพ๋ ๊ฒ๋ณด๋ค ๋ ์งง์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค... :-)