1. Quill 에디터
- Rich Text Editor 이면서 위지윅 에디터라고도 한다.
우리가 보통 인터넷에서 그림을 넣고, 글을 작성 하는 모든 에디터를 위지윅에디터라고 칭 할 수 있다.
오픈 소스 위지윅 에디터이며 modular 구조의 아키텍처이고, 적용하는 웹페이지에 대해서 완벽한 커스텀마이징이 가능하도록 구현 되 있다.
무엇보다 심플하면서 에디터가 가져야되는 최소한의 기능만 딱딱 구현되어 있어서 사용 하였다.
https://quilljs.com
Quill Rich Text Editor
Quill is a free, open source WYSIWYG editor built for the modern web. With its modular architecture and expressive API, it is completely customizable to fit any need.
2. 적용 환경
- 스프링부트, jquery의 환경에서 구현
3. 적용 방법
1. js, css Import
<!--quilljs editor-->
<script src="//cdn.quilljs.com/1.3.6/quill.min.js"></script>
<link href="//cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
2. 에디터 공간 생성
<div id="quillEditor"></div>
3. 스크립트 내 선언
/**
* Quilljs 에디터 테스트
* */
function quilljsediterInit() {
var options = {
modules: {
toolbar: [
[{ header: [1, 2, false] }],
['bold', 'italic', 'underline'],
['image', 'code-block']
]
},
placeholder: 'Compose an epic...',
theme: 'snow'
};
quill = new Quill('#quillEditor', options);
quill.getModule('toolbar').addHandler('image', function() {
selectLocalImage();
});
}
/**
* 퀼 이미지 콜백함수
* */
function selectLocalImage() {
const input = document.createElement('input');
input.setAttribute('type', 'file');
input.click();
// Listen upload local image and save to server
input.onchange = function() {
const fd = new FormData();
const file = $(this)[0].files[0];
fd.append('image', file);
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: '/upload/image/quilleditor',
data: fd,
processData: false,
contentType: false,
beforeSend: function(xhr) {
xhr.setRequestHeader($("#_csrf_header").val(), $("#_csrf").val());
},
success: function(data) {
const range = quill.getSelection();
quill.insertEmbed(range.index, 'image', 'http://localhost:8080/upload/'+data);
},
error: function(err) {
console.error("Error ::: "+err);
}
});
};
}
콜백 함수는 image 라는 toolbar 내 모듈을 클릭시 selectLocalImage() 함수가 실행 되고, 함수 내에서는 type = file 인 input 을 생성, input에서 받은 값을 form-data 에 넣고 springboot 내 이미지 저장 controller를 타게 한다. controller에서는 서버에 이미지 저장 후 이미지 url를 return 하고,
콜백 함수에서는 리턴 받은 url 값을
quill의 insertEmbed() 메소드를 이용하여 에디터에 첨부 한다.
'IT > WEB' 카테고리의 다른 글
오늘의 코딩 2020-03-1 (0) | 2020.03.15 |
---|---|
[vue] vue 에서 페이지 랜더링시 checkbox 컨트롤하기 (0) | 2019.06.12 |
[vue] vue 사용법 정리 (0) | 2019.05.20 |
[javascript] formdata console 확인 방법 (0) | 2019.05.10 |
[javascript] common js 리스트 (0) | 2019.01.23 |