Toast UI Editor는 NHN에서 만든 오픈 소스 에디터이다.
2020년 3월 달에 2.0이 출시되었는데 jQuery 의존성이 제거되었고 Chart, Grid, Calendar 같은 유용한 기능들을 제공해준다.
https://ui.toast.com/weekly-pick/ko_20200318/
또한 jquery, react, vue에서 사용할 수 있도록 Package를 제공해주고 있어 자신의 환경에 맞게 사용할 수 있다.
https://github.com/nhn/tui.editor
apps 폴더 하위에 제공하는 Package가 있고 각 Package를 사용하는 가이드가 readme 문서로 제공되어 있다.
Vue에서 사용하는 방법은 /apps/vue-editor에 설명되어 있다.
https://github.com/nhn/tui.editor/tree/master/apps/vue-editor
설치
npm install --save @toast-ui/vue-editor
vue ui를 사용한다면 거기서 추가를 하면 된다.
사용
Editor와 Viewer를 제공해준다.
Editor는 편집을 할 수 있고 Viewer는 저장된 데이터를 화면에 출력해준다.
Editor 사용
필요한 모듈을 참조하고
import 'codemirror/lib/codemirror.css';
import '@toast-ui/editor/dist/toastui-editor.css';
import { Editor } from '@toast-ui/vue-editor';
템플릿에서 호출한다.
<template>
<editor />
</template>
ajax로 저장하기 위해 editor의 내용을 가져와야 하는데 이를 위해 다음처럼 사용한다.
<template>
<Editor ref="toastuiEditor" />
<b-button @click="createAction">저장하기</b-button>
</template>
<script>
import "codemirror/lib/codemirror.css";
import "@toast-ui/editor/dist/toastui-editor.css";
import { Editor } from "@toast-ui/vue-editor";
export default {
components: {
Editor
},
methods: {
createAction() {
var content = this.$refs.toastuiEditor.invoke("getMarkdown");
// content를 저장하는 액션 처리
}
}
};
</script>
위의 경우 markdown 형태로 가져오는 처리를 하였고
getHtml로 html 형태로 가져올 수 도 있다.
invoke가 사용하는 다양한 메서드는 api 문서를 참조하면 된다.
https://nhn.github.io/tui.editor/latest/ToastUIEditor#addHook
Viewer 사용
Editor에서 획득한 content를 어디엔가 저장하였다면 그걸 보여주는 페이지에서는 Viewer를 사용한다.
<template>
<Viewer v-if="content != null" :initialValue="content" />
</template>
<script>
import "codemirror/lib/codemirror.css";
import "@toast-ui/editor/dist/toastui-editor.css";
import { Viewer } from "@toast-ui/vue-editor";
export default {
components: {
Viewer
},
data() {
return {
content : null
}
},
mounted() {
// 어디선가 저장된 데이터를 호출
fetch("주소").then(response => {
if (response.ok) {
return response.json();
} else {
throw response;
}
}).then(data => {
this.content = data;
});
}
};
</script>
initialValue는 초기에만 설정되므로 data를 ajax로 받기 전까진 Viewer가 실행되지 않도록 v-if 구문으로 체크해주어야 한다.
대부분의 내용은 Toast UI Editor 가이드 문서에 다 설명되어 있는데 Vue를 간간히 쓰는 입장에서 Viewer가 표시되지 않아 헤매었었다.
v-if로 데이터 체크하는 부분이 꼭 필요하다는 점만 신경 쓰면 사용하는데 별로 복잡한 점은 없는 듯하다.
'Study > JavaScript' 카테고리의 다른 글
vue 3 프로젝트 typescript 사용해보기 (0) | 2021.12.23 |
---|---|
vue 로 만든 웹을 desktop app으로 사용하기 (electron builder 소개) (0) | 2021.12.23 |
내가 보려고 만든 디아블로2 룬워드 검색 페이지 (0) | 2021.10.12 |
npmtrends.com 소개 (0) | 2021.10.03 |
vue 3 사용해보기 (0) | 2021.09.29 |
nuxt 프로젝트를 apache cordova로 빌드하기 (windows 10에서) (0) | 2019.11.27 |
vuejs 초보자의 짧은 vuex 사용 팁 (0) | 2019.11.26 |
Vue.js 공부하기 (0) | 2019.03.09 |
[JavaScript][tip] protypejs 와 jQuery의 확장 (0) | 2009.09.08 |
[JavaScript][tip]웹사이트 최적화 기법 중 몇가지 소개 (0) | 2009.05.18 |