Gutenberg: ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ  ์ ‘๊ทผ โ€‹โ€‹๋ฐฉ์‹ ๋น„๊ต

์— ๋งŒ๋“  2017๋…„ 02์›” 23์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: WordPress/gutenberg

์ง€๊ธˆ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ  ํ”„๋กœํ† ํƒ€์ž…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1- https://wordpress.github.io/gutenberg/tinymce-per-block/

  • Multi-TinyMCE
  • ์ œ์–ด๋จ( ์ƒํƒœ -> ๋ Œ๋”๋ง -> ์ด๋ฒคํŠธ -> ์ƒํƒœ -> ๋‹ค์‹œ ๋ Œ๋”๋ง)
  • ์ƒํƒœ๋Š” ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ๋ฒ• ์‚ฌ์šฉํ•˜๊ธฐ

2- https://wordpress.github.io/gutenberg/tinymce-single/ (๋‹จ์ผ TinyMCE, ์ œ์–ด๋˜์ง€ ์•Š์Œ, ๋ฌธ๋ฒ• ์—†์Œ, HTML ๊ตฌ๋ฌธ ๋ถ„์„)

  • ๋‹จ์ผ ๊ธ€๋กœ๋ฒŒ TinyMCE
  • ์ œ์–ด๋˜์ง€ ์•Š์Œ( state -> render -> event -> newState )
  • ์ƒํƒœ๋Š” ์ „์ฒด HTML์„ ํฌํ•จํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ํŽธ์ง‘๊ธฐ ๋‚ด์—์„œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ tinymce.getContent ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ ๋ฌธ๋ฒ• ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์—ฌ๊ธฐ์— ๋‹ค๋ฅธ ๊ธฐ์ˆ  ํ”„๋กœํ† ํƒ€์ž…์„ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค)

์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๊ฐ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

[Type] Question

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

์ด ๋‘ ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ ์ œ ๋Š๋‚Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… 1:

์žฅ์ :

  • ํŽธ์ง‘๊ธฐ ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์—์„œ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ƒํƒœ๋ฅผ ๊ฐ์ฒด๋กœ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐœ์ธ์ ์ธ ์„ ํ˜ธ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ์˜ ์™ธ๋ถ€ ์กฐ์ž‘(TinyMCE์— ๋‚ด์žฅ๋˜์ง€ ์•Š์€ ์ž‘์—…)์€ ๋‹ฌ์„ฑํ•˜๊ธฐ ๋” ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹จ์ :

  • ๋‹ค์ค‘ ๋ธ”๋ก ์„ ํƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. Ctrl+A๋Š” ๋ธ”๋ก๋‹น์ž…๋‹ˆ๋‹ค.

ํ”„๋กœํ†  ํƒ€์ž… 2:

์žฅ์ :

  • ๋‹ค์ค‘ ๋ธ”๋ก ์„ ํƒ
  • Full-text UI ๋Š๋‚Œ์„ ๋” ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ํŽธ์ง‘๊ธฐ ์™ธ๋ถ€์—์„œ ๋ธ”๋ก์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๊นŒ?
  • TinyMCE๋Š” ๋ธ”๋ก ์ฝ˜ํ…์ธ  https://wordpress.slack.com/archives/core-tinymce/p1487169326000067 ๋‚ด์˜ ๊ธฐ๋ณธ ๋™์ž‘ ์ค‘ ์ผ๋ถ€๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹คํ—˜์  ํ”„๋กœํ† ํƒ€์ž… https://github.com/WordPress/gutenberg/pull/113์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ €๋Š” TinyMCE๋ฅผ ๋ž˜ํผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋Š” ํ˜ผํ•ฉ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ํƒ์ƒ‰ ํ›„์— ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ DraftJS ๋˜๋Š” ProseMirror๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  TinyMCE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ณ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋‘ ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ ์ œ ๋Š๋‚Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… 1:

์žฅ์ :

  • ํŽธ์ง‘๊ธฐ ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์—์„œ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ƒํƒœ๋ฅผ ๊ฐ์ฒด๋กœ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐœ์ธ์ ์ธ ์„ ํ˜ธ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ์˜ ์™ธ๋ถ€ ์กฐ์ž‘(TinyMCE์— ๋‚ด์žฅ๋˜์ง€ ์•Š์€ ์ž‘์—…)์€ ๋‹ฌ์„ฑํ•˜๊ธฐ ๋” ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹จ์ :

  • ๋‹ค์ค‘ ๋ธ”๋ก ์„ ํƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. Ctrl+A๋Š” ๋ธ”๋ก๋‹น์ž…๋‹ˆ๋‹ค.

ํ”„๋กœํ†  ํƒ€์ž… 2:

์žฅ์ :

  • ๋‹ค์ค‘ ๋ธ”๋ก ์„ ํƒ
  • Full-text UI ๋Š๋‚Œ์„ ๋” ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ํŽธ์ง‘๊ธฐ ์™ธ๋ถ€์—์„œ ๋ธ”๋ก์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๊นŒ?
  • TinyMCE๋Š” ๋ธ”๋ก ์ฝ˜ํ…์ธ  https://wordpress.slack.com/archives/core-tinymce/p1487169326000067 ๋‚ด์˜ ๊ธฐ๋ณธ ๋™์ž‘ ์ค‘ ์ผ๋ถ€๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹คํ—˜์  ํ”„๋กœํ† ํƒ€์ž… https://github.com/WordPress/gutenberg/pull/113์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ €๋Š” TinyMCE๋ฅผ ๋ž˜ํผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋Š” ํ˜ผํ•ฉ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ํƒ์ƒ‰ ํ›„์— ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ DraftJS ๋˜๋Š” ProseMirror๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  TinyMCE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ณ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํ‹ฐ์ผ“์„ ๋งŒ๋“ค์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ตํ•  ๋•Œ #3๋„ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Prototype 2๊ฐ€ ๊ฐˆ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ก ๋” ๋งŽ์€ TinyMCE ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ€์žฅ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘๊ธฐ ์™ธ๋ถ€์—์„œ ๋ธ”๋ก์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

๋ธ”๋ก ์œ ํ˜• ๋ฐ ์ œ์–ด ์œ ํ˜•์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ TinyMCE๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ•œ Prototype 2์˜ ๋‹จ์ ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋„์˜ Custom TinyMCE ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  API๋ฅผ ์ •์˜ํ•˜๋Š” ๋ธ”๋ก ์œ ํ˜•/์ œ์–ด ์œ ํ˜•์„ ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก ์œ ํ˜•/์ œ์–ด ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฏธ๋ž˜์— ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ๊ณต๊ธ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ง›์ด ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ Prototype 2๋Š” WordPress๊ฐ€ ์ด๋ฏธ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋Œ€๋ถ€๋ถ„ ๋ฐ˜์˜ํ•˜๊ณ  TinyMCE๊ฐ€ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋‚˜์—๊ฒŒ ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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