½ÃÀÛÆäÀÌÁö·Î Áñ°Üã±âÃß°¡
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ l Ã⼮üũ l ¸¶ÀÌÆäÀÌÁö l CGIMALL
Autumn Note - À§ÁöÀ¨ ¿¡µðÅÍ : happycgi
ÀÚ·á½Ç »çÀÌÆ®µî·Ï ·©Å·100 ÇÁ·Î±×·¥¸®ºä °ü¸®ÀÚÃßõÀÚ·á Ãʺ¸°¡À̵å
Ä¿¹Â´ÏƼ
Àüü ÆîÃ帱â
Äü¸Þ´º¸µÅ© jquery , CSS , PHP , Javascript , ¹«·áÆùÆ® , ASP
»ó¼¼°Ë»ö
Ȩ > JAVASCRIPT > Autumn Note - À§ÁöÀ¨ ¿¡µðÅÍ »ó¼¼Á¤º¸
»çÀÌÆ®µî·Ï
Ŭ¶ó¿ìµåű×
javascript
HTML
PHP
CSS
Api
ASP
mysql
2022
jquery
Slide
¸ðµâ
¸ÞÀϸµ
Ä«¿îÅÍ
ÇöÀçÁ¢¼ÓÀÚ ¸í »õ·Î°íħ
Autumn Note - À§ÁöÀ¨ ¿¡µðÅÍ
¼Ò½ºÅë°èÁ¤º¸ ¿À·ù½Å°í ¹× ¹®ÀÇ
ÇØÇÇÆÀ
³×ƼÁð
Æ®À§ÅÍ·Î º¸³»±â ÆäÀ̽ººÏÀ¸·Î º¸³»±â
¼Ò½ººÐ·ù JAVASCRIPT
´Ù¿î·Îµå Ƚ¼ö 1 ȸ
°£´Ü¼³¸í ¼ø¼ö JavaScript(Vanilla JS)·Î ÀÛ¼ºµÈ WYSIWYG ¿¡µðÅÍÀÔ´Ï´Ù. ¸®Ä¡ ÅØ½ºÆ® ÆíÁý, À̹ÌÁö/µ¿¿µ»ó/Ç¥ »ðÀÔ, ÄÚµå º¸±â, HTML Ãâ·Â »ì±Õ(sanitize) ±â´ÉÀ» °®Ãß°í ÀÖ¾î CMS °Ô½ÃÆÇ, °ü¸®ÀÚ ´ë½Ãº¸µå, ¹®¼­ µµ±¸, À̸ÞÀÏ/´º½º·¹ÅÍ ÀÛ¼º±â, ´ñ±Ûâ µî ´Ù¾çÇÑ ÀÔ·Â ¿µ¿ª¿¡ ÀûÇÕÇÕ´Ï´Ù.
Æò°¡Çϱâ ÈǸ¢ÇÔ ¸Å¿ìÁÁÀ½ ÁÁÀ½ ±¦ÂúÀ½ º¸Åë º°·Î
ȨÆäÀÌÁö¹Ù·Î°¡±â ¼Ò½º´Ù¿î·Îµå µ¥¸ð ¹Ì¸®º¸±â ½ºÅ©·¦Çϱâ




# ¶óÀ̼¾½º

MIT License (»ó¾÷Àû ÀÌ¿ë °¡´É, ÀÚÀ¯·Î¿î ¼öÁ¤·¹èÆ÷ °¡´É)

 

# Ư¡ ¹× ¼³¸í


ÅØ½ºÆ® ÆíÁý

  • ±½°Ô, ±â¿ïÀÓ, ¹ØÁÙ, Ãë¼Ò¼±, À§Ã·ÀÚ, ¾Æ·¡Ã·ÀÚ
  • 6´Ü°è Á¦¸ñ, Àο뱸, ÄÚµåºí·Ï ´Ü¶ô ½ºÅ¸ÀÏ
  • 10Á¾ ³»Àå ±Û²Ã(Ä¿½ºÅÒ ±Û²Ã Ãß°¡ °¡´É), ÁÙ°£°Ý Á¶Àý
  • ±ÛÀÚ»ö·Çü±¤Ææ Ä÷¯ ÇÈÄ¿, ÁÂ/Áß/¿ì/¾çÂÊ Á¤·Ä
  • ¼ø¼­/ºñ¼ø¼­/üũ¸®½ºÆ® ¸ñ·Ï, µé¿©¾²±â/³»¾î¾²±â
  • Undo/Redo È÷½ºÅ丮 (´ÜÃàŰ Áö¿ø)


¹Ìµð¾î »ðÀÔ

  • À̹ÌÁö: URL/ÆÄÀÏ ¾÷·Îµå, base64 ÀÓº£µå ¶Ç´Â ¼­¹ö ¾÷·Îµå Áö¿ø
  • ÀζóÀÎ À̹ÌÁö ÀÚ¸£±â µµ±¸ ³»Àå
  • µ¿¿µ»ó: YouTube, Vimeo, MP4/WebM/OGG Á÷Á¢ URLÀ» ¹ÝÀÀÇü ¾ÆÀÌÇÁ·¹ÀÓ·video ű׷Π·»´õ¸µ
  • Ç¥: ±×¸®µå ÇÈÄ¿·Î Á÷°üÀû »ðÀÔ
  • À̸ðÁö ÇÈÄ¿: 7°³ Ä«Å×°í¸® 380Á¾ + Ű¿öµå °Ë»ö
  • FontAwesome ¾ÆÀÌÄÜ ÇÈÄ¿: ½ºÅ¸ÀÏ·Å©±â·»ö»ó ¼³Á¤ °¡´É


ÆíÀÇ ±â´É

  • ã±â·¹Ù²Ù±â ´ÙÀ̾ó·Î±× (Ctrl+F / Ctrl+H)
  • ¿ìŬ¸¯ ÄÁÅØ½ºÆ® ¸Þ´º
  • ½ºÅ©·Ñ ½Ã »ó´Ü °íÁ¤µÇ´Â sticky Åø¹Ù
  • ¶óÀÌÆ®/´ÙÅ© Å׸¶
  • »óŹÙ: ½Ç½Ã°£ ´Ü¾î/±ÛÀÚ ¼ö Ç¥½Ã + µå·¡±×·Î ³ôÀÌ Á¶Àý
  • HTML ¼Ò½º º¸±â ¸ðµå
  • localStorage ÀÚµ¿ ÀúÀå (auto-save)
  • Àбâ Àü¿ë ¸ðµå
  • 8°³ ¾ð¾î ·ÎÄÉÀÏ ³»Àå (Çѱ¹¾î 'ko' Æ÷ÇÔ)
  • RTL(¿ì→ÁÂ) ·¹À̾ƿô Áö¿ø
  • Űº¸µå ´ÜÃàŰ ´ÙÀ̾ó·Î±× (Shift+?)


°³¹ßÀÚ Ä£È­ ±â´É

  • ´ÙÁß ÀνºÅϽº Áö¿ø (ÆäÀÌÁö´ç ¿©·¯ ¿¡µðÅÍ, °¢°¢ µ¶¸³ »óÅÂ)
  • Bootstrap 4/5 Ŭ·¡½º ÀÚµ¿ Àû¿ë ¿É¼Ç
  • Prism.js ÀÚµ¿ ¿¬µ¿ ÄÚµå ÇÏÀ̶óÀÌÆ®
  • ºÙ¿©³Ö±â »ì±Õ ¹× Markdown ´ÜÃà ÀÔ·Â º¯È¯
  • dzºÎÇÑ À̺¥Æ® ½Ã½ºÅÛ (change, paste, selectionChange, charLimitReached µî)


Űº¸µå ´ÜÃàŰ

´ÜÃàŰ µ¿ÀÛ
Ctrl + Z ½ÇÇà Ãë¼Ò(Undo)
Ctrl + Shift + Z / Ctrl + Y ´Ù½Ã ½ÇÇà(Redo)
Ctrl + B ±½°Ô
Ctrl + I ±â¿ïÀÓ
Ctrl + U ¹ØÁÙ
Ctrl + F ã±â ´ÙÀ̾ó·Î±× ¿­±â
Ctrl + H ã±â·¹Ù²Ù±â ´ÙÀ̾ó·Î±× ¿­±â
Shift + Enter ÁÙ¹Ù²Þ »ðÀÔ
Tab °ø¹é »ðÀÔ / ¸ñ·Ï µé¿©¾²±â
Shift + Tab ¸ñ·Ï ³»¾î¾²±â
Shift + ? ´ÜÃàŰ µµ¿ò¸» ´ÙÀ̾ó·Î±×


Ãßõ Ȱ¿ëó

CMS °Ô½ÃÆÇ ±Û¾²±â, °ü¸®ÀÚ ÆäÀÌÁö ÄÜÅÙÃ÷ ÀÔ·Â, ¸Å´º¾ó·¹®¼­ ÀÛ¼º µµ±¸, ¸ÞÀÏ·´º½º·¹ÅÍ ÀÛ¼º±â, ´ñ±Û·¸®ºä ÀÔ·Ââ µî.


Âü°í ¸µÅ©



# ¼³Ä¡¹æ¹ý


¨ç ÆÐŰÁö ¸Å´ÏÀú ¼³Ä¡

npm install autumnnote # ¶Ç´Â yarn add autumnnote # ¶Ç´Â pnpm install autumnnote
import AutumnNote from 'autumnnote'; import 'autumnnote/dist/autumnnote.css';


¨è CDN ¹æ½Ä

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/autumnnote/dist/autumnnote.css"> <script src="https://cdn.jsdelivr.net/npm/autumnnote"></script>


¨é ±âº» »ç¿ë

const editor = AutumnNote.create('#article-editor', {   // ¿É¼Ç ¼³Á¤ });


¨ê ¼­¹ö ¾÷·Îµå ó¸® ¿¹½Ã

const editor = AutumnNote.create('#article-editor', {   onImageUpload(files) {     const payload = new FormData();     payload.append('image', files[0]);     fetch('/media/images/upload', { method: 'POST', body: payload })       .then(res => res.json())       .then(({ url }) => editor.insertImage(url, files[0].name));   }, });

¡Ø FontAwesomeÀÌ ÆäÀÌÁö¿¡ ·ÎµåµÇ¾î ÀÖÀ¸¸é ÀÚµ¿ °¨ÁöµÇ¾î FA ¾ÆÀÌÄÜÀ» »ç¿ëÇϰí, ¾øÀ¸¸é ³»Àå SVG ¾ÆÀÌÄÜÀ¸·Î ´ëüµË´Ï´Ù.


Áß¿ä ¿É¼Ç

¿É¼Ç¸í ¼³¸í ±âº»°ª
placeholder ºó ¿¡µðÅÍ¿¡ Ç¥½ÃÇÒ ¾È³» ¹®±¸ -
height Ãʱ⠳ôÀÌ(px) 200
minHeight / maxHeight ÃÖ¼Ò/ÃÖ´ë ³ôÀÌ(px), 0Àº ¹«Á¦ÇÑ 100 / 0
toolbar Åø¹Ù ¹öư ±×·ì ¹è¿­·Î Ä¿½ºÅ͸¶ÀÌ¡ Àüü ¹öư
toolbarOverflow Åø¹Ù ³Ñħ ó¸® ('wrap' ¶Ç´Â 'scroll') wrap
theme Å׸¶ ('light' ¶Ç´Â 'dark') light
lang UI ¾ð¾î ('ko', 'en', 'ja', 'zh', 'vi', 'fr', 'de', 'es') en
direction ÅØ½ºÆ® ¹æÇâ ('ltr' ¶Ç´Â 'rtl') ltr
autoSave / autoSaveKey localStorage ÀÚµ¿ ÀúÀå Ȱ¼ºÈ­ ¹× Ű ÁöÁ¤ false
readOnly Àбâ Àü¿ë ¸ðµå false
allowImageUpload À̹ÌÁö µå·¡±×/ºÙ¿©³Ö±â/¾÷·Îµå Çã¿ë true
maxImageSize ÃÖ´ë À̹ÌÁö Å©±â(MB) 5
maxChars / maxWords ÃÖ´ë ±ÛÀÚ/´Ü¾î ¼ö Á¦ÇÑ, 0Àº ¹«Á¦ÇÑ 0
pasteAsPlainText ºÙ¿©³Ö±â ½Ã ¼­½Ä Á¦°Å false
pasteCleanHTML ºÙ¿©³Ö±â ½Ã HTML »ì±Õ true
markdownPaste Markdown ´ÜÃà ÀÔ·ÂÀ» HTML·Î º¯È¯ true
stickyToolbar / stickyToolbarOffset ½ºÅ©·Ñ ½Ã Åø¹Ù »ó´Ü °íÁ¤ ¹× ¿ÀÇÁ¼Â(px) false
useBootstrap / bootstrapVersion Bootstrap CSS Ŭ·¡½º Àû¿ë (4 ¶Ç´Â 5) false / 5
codeHighlight Prism.js ÀÚµ¿ ·Îµå·Î ÄÚµå ºí·Ï ÇÏÀ̶óÀÌÆ® true
colorSwatches »ö»ó ÆÈ·¹Æ® ¾Õ¿¡ Ãß°¡ÇÒ ºê·£µå Ä÷¯ ¹è¿­ [ ]
onChange / onFocus / onBlur / onInit ÄÜÅÙÃ÷ º¯°æ / Æ÷Ä¿½º / ºí·¯ / ÃʱâÈ­ Äݹé -
onImageUpload / onImageError Ä¿½ºÅÒ ¾÷·Îµå Çڵ鷯 / À̹ÌÁö °ÅºÎ Äݹé -


ÁÖ¿ä API ¸Þ¼­µå

¸Þ¼­µå ¼³¸í
editor.getHTML() »ì±ÕµÈ HTML ¹Ýȯ (Æû Á¦Ãâ¿ë)
editor.setHTML(html) ÄÜÅÙÃ÷ ¼³Á¤
editor.getText() Æò¹® ÅØ½ºÆ® ¹Ýȯ
editor.clear() ÄÜÅÙÃ÷ ºñ¿ì±â
editor.destroy() ¿¡µðÅÍ Á¦°Å ¹× ¿ø·¡ DOM º¹¿ø
editor.setDisabled(bool) ¿¡µðÅÍ·Åø¹Ù Ȱ¼º/ºñȰ¼º Àüȯ
editor.on(event, handler) / editor.off(event, handler) À̺¥Æ® ¸®½º³Ê µî·Ï/ÇØÁ¦

³×ƼÁð ÀÇ°ß   ÀÌ¿ëÇϽŠÀÚ·áÀÇ Èı⸦ ÀÚÀ¯·Ó°Ô ÀÛ¼ºÇϼ¼¿ä. (»ó¾÷ÀûÀÎ ±¤°í ¹× µµ¹è¼º ±Û µîÀº »çÀüÅ뺸¾øÀÌ »èÁ¦µÉ ¼ö ÀÖ½À´Ï´Ù.)
³»¿ë ¾ÆÀ̵ð Àǰ߳²±â±â
µî·ÏµÈ ÀǰßÀÌ ¾ø½À´Ï´Ù.
1
À̸§
³»¿ë
:³×¸Â¾Æ¿ä: :È­³ª´Â±º¿ä: :Àá¿Í: :¿ì¿ïÇØ: :À̰ǾƳÄ: :¿ÕÇÏÇÏ: ¿Õ¿ôÀ½~ ³î·¥~
Æò°¡Çϱâ ÈǸ¢ÇÔ ¸Å¿ìÁÁÀ½ ÁÁÀ½ ±¦ÂúÀ½ º¸Åë º°·Î
µµ¹è¹æÁöŰ
 77524444 º¸ÀÌ´Â µµ¹è¹æÁö۸¦ ÀÔ·ÂÇϼ¼¿ä.