서론
데이터를 입력하고 외부에서 해당 데이터를 view하기 위해 html에 style이나 tag를 직접 변경하는 에디터가 필요하여 찾던 중 html에 스타일이 적용되는 vue-quill-editor 에디터를 적용하였다.
설치
npm i vue-quill-editor
소스
vue
<template>
<div class="example">
<quill-editor
class="editor"
ref="myTextEditor"
:disabled="false"
:value="content"
:options="editorOption"
@change="onEditorChange"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@ready="onEditorReady($event)"
/>
<div class="output ql-snow">
<div v-html="content"></div>
</div>
</div>
</template>
script
<script>
import hljs from "highlight.js";
import debounce from "lodash/debounce";
import { quillEditor } from "vue-quill-editor";
// highlight.js style
import "highlight.js/styles/tomorrow.css";
// import theme style
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
export default {
name: "quill-example-snow",
title: "Theme: snow",
components: {
quillEditor,
},
data() {
return {
editorOption: {
placeholder: "place holder test",
modules: {
toolbar: [
["bold", "italic", "underline", "strike"], // <strong>, <em>, <u>, <s>
["blockquote", "code-block"], // <blockquote>, <pre class="ql-syntax" spellcheck="false">
[{ header: 1 }, { header: 2 }], // <h1>, <h2>
[{ list: "ordered" }, { list: "bullet" }],
[{ script: "sub" }, { script: "super" }], // <sub>, <sup>
[{ indent: "-1" }, { indent: "+1" }], // class제어
[{ direction: "rtl" }], //class 제어
[{ size: ["small", false, "large", "huge"] }], //class 제어 - html로 되도록 확인
[{ header: [1, 2, 3, 4, 5, 6, false] }], // <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, normal
[{ font: [] }], // 글꼴 class로 제어
[{ color: [] }, { background: [] }], //style="color: rgb(230, 0, 0);", style="background-color: rgb(230, 0, 0);"
[{ align: [] }], // class
// ["clean"],
["link", "image", "video"],
],
syntax: {
highlight: (text) => hljs.highlightAuto(text).value,
},
},
},
content: "",
};
},
methods: {
onEditorChange: debounce(function(value) {
this.content = value.html;
}, 466),
onEditorBlur(editor) {
console.log("editor blur!", editor);
},
onEditorFocus(editor) {
console.log("editor focus!", editor);
},
onEditorReady(editor) {
console.log("editor ready!", editor);
},
},
computed: {
editor() {
return this.$refs.myTextEditor.quill;
},
contentCode() {
return hljs.highlightAuto(this.content).value;
},
},
mounted() {
console.log("this is Quill instance:", this.editor);
},
};
</script>
설명
editorOption : 에디터 옵션을 설정하는 data
- placeholder : 에디터 안에 placeholder
- modules - toolbar : 에디터 상단 툴바 옵션 설정
["bold", "italic", "underline", "strike"], // html : <strong>, <em>, <u>, <s>
["blockquote", "code-block"], // html : <blockquote>, <pre class="ql-syntax" spellcheck="false">
[{ header: 1 }, { header: 2 }], // <h1>, <h2>
[{ list: "ordered" }, { list: "bullet" }],
[{ script: "sub" }, { script: "super" }], // <sub>, <sup>
[{ indent: "-1" }, { indent: "+1" }], // class set
[{ direction: "rtl" }], //class set
[{ size: ["small", false, "large", "huge"] }], // class set
[{ header: [1, 2, 3, 4, 5, 6, false] }], // <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, normal
[{ font: [] }], // 글꼴 class로 제어
[{ color: [] }, { background: [] }], //style="color: rgb(230, 0, 0);", style="background-color: rgb(230, 0, 0);"
[{ align: [] }], // class
// ["clean"],
["link", "image", "video"],
'vue.js > vue.js 라이브러리' 카테고리의 다른 글
[vue.js]quill editor file upload base64에서 DB 저장으로 변경 처리 (0) | 2022.07.21 |
---|---|
[vue.js] sheetjs 라이브러리를 이용하여 엑셀(excel) 업로드 및 읽기 예제 (0) | 2022.07.07 |
[vue.js] vue2-datepicker 캘린더 주(week) 단위 선택 및 style 설정하기 (0) | 2022.05.06 |
[vue.js] 엑셀(excel) 다운 기능 sheetjs 라이브러리 설치 및 사용 예제 (0) | 2022.04.11 |
[vue.js] vue-awesome-swiper 라이브러리 설치 및 사용 예제 (0) | 2021.02.23 |