Toast UI Editor
๐ฉ๋ชฉ์ฐจ
๐ ๊ฐ๋ฐ ๋ ํผ๋ฐ์ค
TOAST UI :: Make Your Web Delicious!
tui.editor/v3.0-migration-guide-ko.md at master · nhn/tui.editor
TOAST UI Editor ์ฌ์ฉ๋ฒ ( ๋งํฌ๋ค์ด ์๋ํฐ Markdown Editor)
TIL 2022.07.18 Toast UI editor Javascript ๊ตฌํ
๐ ํ ์คํธ UI ์๋ํฐ?
- ํ ์คํธ UI ์๋ํฐ๋ ์น ํ๋ก ํธ์๋์ ๋ถ์ด๋ ํธ์ง๊ธฐ๋ก, ํ ์คํธ ๋๋ WYSIWYG๋ฅผ ์ฌ์ฉํ์ฌ ๋งํฌ๋ค์ด ๋ฌธ์๋ฅผ ํธ์งํ ์ ์์ผ๋ฉฐ ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์, ์คํฌ๋กค ๋๊ธฐํ, ์ค์๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฐ ์ฐจํธ ๊ธฐ๋ฅ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
๐ก ๋ชฉ์
- ๋งํฌ๋ค์ด ํ์์ผ๋ก ๊ธ์ ์์ฑํ๊ณ ์กฐํํ ์ ์๋ ์ฌ๋ฌ ํ์ด์ง๋ค(์์๋ก ๊นํ๋ธ์ ๋ฒจ๋ก๊ทธ๊ฐ ์์)์์ ์์ด๋์ด๋ฅผ ์ฐจ์ฉํ์
- ๊ฐ๋ฐ์๋ฅผ ์ํ ์ปค๋ฎค๋ํฐ์ธ ๊ฑฐ๋ฎค๋ํฐ์์ ์ง๋ฌธ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด์, ์ฝ๋๋ธ๋ญ์ด ํฌํจ๋ ๋งํฌ๋ค์ด ํ์์ผ๋ก ๊ธ์ ์์ฑํ๊ณ ๋ณด์ฌ์ค ์ ์๋ค๋ฉด ๊ต์ฅํ ํธ๋ฆฌํ ํ ๋ฐ!
- ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ๋งํฌ๋ค์ด ํ์์ผ๋ก ์์ฑํ๋ฉด, ๊ทธ๋๋ก ์ ์ฅํ๊ณ , ๋ค์ ํ์ด์ง์์ ๋ณด์ฌ์ค ์ ์๋ ์๋ํฐ๊ฐ ํ์ํ๋ค!
๐ป์๋ํฐ(Editor)
- ์๋ํฐ๋ ๋งํฌ๋ค์ด ๋ฐฉ์๊ณผ ์ฝ๋๋ธ๋ญ์ ์์ฑํ ์ ์๋ ํธ์ง๊ธฐ
- ํธ์ง๊ธฐ๋ฅผ ์์ฑํ๊ณ ์ถ์ ๊ณณ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค
๐๐จ๋ทฐ์ด(Viewer)
- ๋ทฐ์ด๋ ๋งํฌ๋ค์ด ๋ฐฉ์๊ณผ ์ฝ๋๋ธ๋ญ์ ํ๋ฉด์์ ๋ณผ ์ ์๊ฒ ํด์ฃผ๋ ์๊ฐํ ์ญํ ์ ์ํํจ
- ๋งํฌ๋ค์ด ํํ์ ๊ธ์ ๋ณด๊ณ ์ถ์ ๊ณณ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค
โ ์ฌ์ฉ๋ฒ
๐พ Toast UI Editor ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
- Toast UI Editor ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ JQuery, Google Fonts์ ๊ฐ์ด ์ฃผ์ํํ๋ก ๋ฐฐํฌ๋์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ ์ฃผ์ด์ผ ํจ
- CSS(์คํ์ผ์ํธ), JS(์คํฌ๋ฆฝํธ) ํ์ผ์ ๊ฐ๊ฐ head, body ํ๊ทธ ์์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค
- ๋ํ ์๋ํฐ์ ๋ทฐ์ด ๊ฐ๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ์คํฌ๋ฆฝํธ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํจ
๐จ HTML ํ๊ทธ ์์ฑ
- ์๋ํฐ์ ๋ทฐ์ด๋ฅผ ์์ฑํ๊ธฐ ์ํ div๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํ๋ค
- ์๋ํฐ์ ๋ทฐ์ด๋ ๊ฐ๊ฐ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ๋๋ editor, viewer ๋ผ๋ id ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํจ๊ป ์์ฑํด์ฃผ์ด์ผ ํ๋ค
๐ Script ์์ฑ
- div๋ก ๋ง๋ค์ด์ง ํ๊ทธ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ด ๊ตฌํ
- ์๋ํฐ์ ๋ทฐ์ด๋ ๊ฐ๊ฐ Editor, Editor.Factory ๋ผ๋ Toast UI Editor ๋ด์ฅ ํจ์๋ฅผ ์ฌ์ฉํ๋ค
๐จ๐ป ์ฝ๋
Editor ์ฝ๋
<!DOCTYPE html>
<html>
<head
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css" />
<script src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js"></script>
</head>
<body>
<div id="editor"></div>
<script>
const Editor = toastui.Editor;
const editor = new Editor({
el: document.querySelector('#editor'),
height: '500px',
initialEditType: 'markdown',
previewStyle: 'vertical'
});
</script>
</body>
</html>
Viewer ์ฝ๋
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/codemirror.css" />
<link rel="stylesheet" href="https://uicdn.toast.com/editor/2.0.0/toastui-editor.min.css" />
</head>
<body>
<div id="viewer"></div>
<script src="https://uicdn.toast.com/editor/2.0.0/toastui-editor-all.min.js"></script>
<script>
// initialValue๋ ๊ธฐ๋ณธ๊ฐ์ด content๋ก ๋์ด ์์
// ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ content๋ก ์ ์ธํด์ผํจ
const viewer = toastui.Editor.factory({
el: document.querySelector('#viewer'),
viewer: true,
height: '500px',
initialValue: details.content
});
</script>
</body>
</html>
๐ฉ์ง๋ฌธ ์ ๋ฆฌ
์ ์๋ํฐ๋ ๋ณ์๋ก ์ ์ธํด์ฃผ๋์?
- ๋ณ์๋ก ์ ์ธํ ๊ฒ์ ํจ์๋ก ์คํ์ํจ ์๋ํฐ, ๋ทฐ์ด๋ฅผ ๋ด์ฅํจ์๋ฅผ ํตํด ์ฌ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ
- ์ฌ์ฌ์ฉํ ์๊ฐ์ด ์๋ค๋ฉด ๋ณ์๋ก ์ ์ธํ์ง ์์๋ ๋์ง๋ง,
toastui.Editor()
์ ๊ฐ์ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ๋ฐ๋์ ํ์ํ๋ค
toastui.Editor.factory({
el: document.querySelector('#viewer'),
viewer: true,
height: '500px',
initialValue: details.content
});
๋ทฐ์ด์ ๊ด๋ จ๋ ์คํฌ๋ฆฝํธ์ ์์น๋?
- ๋ทฐ์ด๋ ํจ์๋ฅผ ํธ์ถํ ๋ ๊ฐ์ ๋ฃ์
initialValue
๋ผ๋ ๊ฐ์ ์๊ตฌํ๋ค - ๋งํฌ๋ค์ด์ผ๋ก ๋ณด์ฌ์ค ๋ฐ์ดํฐ ๊ฐ์ ์๋ฏธํ๋๋ฐ, API๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ๋๋ค๋ฉด, ๋ฐ์ดํฐ๋ฅผ ๋๋ ค๋ฐ๋ API ๋ด๋ถ์ ์ด ์ฝ๋๊ฐ ๋ค์ด์์ด์ผ
initialValue
๋ฅผ ์ ๋ฌํ ์ ์๋ค - ์๋ํฐ๋ฅผ ๋ฐ๋ก js ํ์ผ๋ก ๋นผ์ฃผ๋ ค๋ฉด ํด๋น ์ฝ๋๋ฅผ ํจ์๋ก ์ ์ธํ๊ณ , API์์ ๋๋ ค์ค ๋ฐ์ดํฐ๋ฅผ ๋ด์ ํจ์๋ฅผ ํธ์ถํด์ฃผ์ด์ผ ํ๋ค!
window.onload = async function loadDetails() {
// ๋ฐ์ดํฐ๋ฅผ ๋๋ ค์ฃผ๋ API GET Method
// ์์ ์์ฑ๊ธ์ ๋ฐ์ดํฐ์ธ details.content๊ฐ ํฌํจ๋์ด ์๋ค.
const details = await QuestionDetail(question_id);
// ๋งํฌ๋ค์ด ์กฐํ
const viewer = toastui.Editor.factory({
el: document.querySelector('#viewer'),
viewer: true,
height: '500px',
initialValue: details.content
});
'๊ฐ๋ฐ_TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋ฐ_TIL | 2022-09-08 (79) (0) | 2022.09.08 |
---|---|
๊ฐ๋ฐ_TIL | 2022-08-08 (77) (0) | 2022.08.09 |
๊ฐ๋ฐ_TIL | 2022-08-05 (76) (0) | 2022.08.09 |
๊ฐ๋ฐ_TIL | 2022-08-04 (75) // feat) KPT (0) | 2022.08.04 |
๊ฐ๋ฐ_TIL | 2022-08-03 (74) (0) | 2022.08.04 |