๋ด๋น ๋๋ฉ์ธ
Notice :ย ์ง๋ฌธ ๊ฒ์ํ์ ์ฐ๋ฆฌ ์น์ฌ์ดํธ์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์
๋๋ค.
์ฐ๋ฆฌ ์น์ฌ์ดํธ์ ํ์ ์ฌ์ฉ์๋ค์ ์ง๋ฌธ ๊ฒ์ํ์ ํตํด ๊ธฐ๋ถ์ ๊ด๋ จ๋ ์ง๋ฌธ ์ฌํญ, ๊ธฐ๋ถ๋ฅผ ๋ฐ๊ธฐ ์ํ ์ง๋ฌธ ์ฌํญ ๋ฑ์ ๊ธ์ ์์ฑํ ์ ์์ต๋๋ค. ๋ํ ๋๊ธ๋ก ํ์๊ฐ์ ์ํต์ ํ ์ ์์ต๋๋ค.
์ธ๋ถ ๋ชฉ์ฐจ
๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โข
#1. ๊ตฌํ ๊ณํ
โข
#2. ๊ธฐ๋ฅ ์์ฐ
โข
#3. ๊ตฌํ ์ค์ ๋ฐ์ํ ์ด์
โข
#4. ์ด์ ํด๊ฒฐ
โข
#5. ๊ตฌํ ์๋ฃ ์ดํ ๋๋ฒ๊น
โข
#6. ํด๊ฒฐ ํด์ผ ํ ๋จ์ ๋ฌธ์
#1. ๊ตฌํ ๊ณํ
์ง๋ฌธ ๊ฒ์ํ์ ํต์ฌ :
โข
์ค์ง ํ์๋ง ๊ฒ์๊ธ์ ๋ฑ๋ก, ์ฝ๊ธฐ๋ฅผ ํ ์ ์๊ณ ๋ณธ์ธ์ ๊ธ๋ง ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
โข
์ค์ง ํ์๋ง ๋๊ธ ๋ฑ๋ก์ ํ ์ ์๊ณ ๋ณธ์ธ์ ๋๊ธ๋ง ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
์ด์ : ์ฃผ๋ก ์ฑ
์ ๊ธฐ๋ถ ํ๊ณ ์ถ์ ์ฌ๋๊ณผ ์ฑ
์ ๊ธฐ๋ถ ๋ฐ๊ณ ์ถ์ ์ฌ๋๋ง ์ ํฌ ํ์ด์ง๋ฅผ ์ฌ์ฉ ํ ๊ฒ์ด๋ผ ์์๋๊ธฐ ๋๋ฌธ์ ํน์ ๋นํ์์ด ๊ฒ์ํ์ ์ด์ง๋ฝํ๋ ์ผ์ ๋ฐฉ์งํ๊ณ ์ ํ์๋ง ๊ฒ์๊ธ์ ์์ฑ ํ ์ ์๋๋ก ํ์ต๋๋ค.
โข
์ด๋ฅผ ์ํด ํ์์ด ์๋๋ฉด ๊ฒ์๊ธ ์์ฑ & ๊ฒ์๊ธ ์ฝ๊ธฐ ์ ๋ก๊ทธ์ธ์ ๋จผ์ ๊ถ์ ํ๋ ๋ก์ง์ ์ง๊ธฐ๋ก ํ์ต๋๋ค.
#2. ๊ธฐ๋ฅ ์์ฐ
์ด์ ์น์ฌ์ดํธ์ ์ง์ ์ ์ํ์ฌ ์ง๋ฌธ ๊ฒ์ํ์ ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ์์ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์์ฐ ์์)
๋นํ์ ์ํ๋ก ๊ฒ์๊ธ ์์ฑ
โ ๋ก๊ทธ์ธ ํ๋ฉด
โ ๋ก๊ทธ์ธ ํ ๊ฒ์๊ธ ๋ฑ๋ก ๋ฐ ์์ , ์ญ์
โ ๋๊ธ ๋ฑ๋ก ๋ฐ ์์ , ์ญ์
#3. ๊ตฌํ ์ค์ ๋ฐ์ํ ์ด์
์ด์ #1 : vue-quill-editor ์ฌ์ฉ์ imageFileList(formData)๊ฐ null์ธ ์ฌํญ
์ด์ #2 : vue-quill-editor ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง ์
๋ก๋์ ๋ฌด์กฐ๊ฑด base64 ์ธ์ฝ๋ฉ์ด ๋๋ ์ฌํญ
์ด์ #2 - ์ฐธ๊ณ ์ฌ์ง
#4. ์ด์ ํด๊ฒฐ
ํด๊ฒฐ :
๋จผ์ ์ ์๋์ ๋ง์๋๋ก ์ด๋ฏธ์ง ์
๋ก๋์ ๊ฐ์ฅ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
โข
ํด๋น ์ด๋ฏธ์ง์ ๊ฒฝ๋ก๊ฐ ์ด๋ฏธ์ง ์ํฐํฐ์ ๊ฒฝ๋ก๋ก์ ์ ์ฅ๋์ด์ผ ํ๋ค.
โข
๋ฐฑ์ผ๋ก ์ ๋ฌ ๋ฐ์ ์ด๋ฏธ์ง๋ ์ค์ ๋ก ์ด๋ฏธ์ง ํ์ผ๋ก์ ๋ก์ปฌ์ ์ ์ฅ ๋์ด์ผ ํ๋ค.
โข
์ ์ฅ๋๋ ์ด๋ฏธ์ง ํ์ผ์ ํ์ผ๋ช
์ด ์ค๋ณต๋์ง ์๊ฒ ํด์ผํ๋ค. (ex : UUID)
์์ ๋ฐฉ์์ผ๋ก ์๋ํ๋๋ก ๊ตฌ์ํ๊ณ , null์ ํด๊ฒฐํ๊ธฐ ์ํด ์๋์ ์ฝ๋๋ฅผ ์ ์ฉ ํ์ต๋๋ค.
โข
querySelectorAll์ ์ฌ์ฉํ์ฌ quill-editor ๋ด์ ์กด์ฌํ๋ <img> ํ๊ทธ๋ฅผ ๊ฒ์
โข
ํด๋น ์ด๋ฏธ์ง๋ฅผ ํ์ผ ๊ฐ์ฒด๋ก ๋ณํ ํ, ๋ฐฑ์ ์ด๋ฏธ์ง๋ฅผ ํ์ผ ๊ฐ์ฒด๋ก์ ์ ๋ฌํ๋ ๊ฒ
์ฌ์ฉ ๋์ด์ง ์ฝ๋ - ์ฐธ๊ณ ์ฌ์ง
์ด๋ ๊ฒ imageFileList๊ฐ null์ธ ์ด์ #1์ ํด๊ฒฐ ํ์์ต๋๋ค.
ํ์ง๋ง formData ์ค qnaInfo์ content์ ์ด๋ฏธ์ง๊ฐ base64๋ก ์ธ์ฝ๋ฉ ๋์ด
์ฌ์ ํ DB์ <p><img /></p>์ ํํ๋ก ์ ์ฅ๋๊ณ ์์์ต๋๋ค.
์์ ๊ฐ์ ์ด์ #2๋ฅผ ํด๊ฒฐ ํ๊ณ ์ ์๋์ ์ฝ๋๋ฅผ ์ ์ฉ ํ์ต๋๋ค.
โข
content์ <p><img /></p>๋ฅผ replaceAll๋ก ์ ๊ฑฐํ๋ค.
์ฌ์ฉ ๋์ด์ง ์ฝ๋ - ์ฐธ๊ณ ์ฌ์ง
base64๋ก ์ธ์ฝ๋ฉ ๋์ด์ง ๊ฒ์ ๋จ์ํ replace ํ DB์ ์ ์ฅํ๋ ๊ฒ์ผ๋ก
์์ ํ ํด๊ฒฐํ ๊ฒ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๊ฐ์ ์ฌ์ ๊ฐ ์์๋ base64๋ฅผ ์กฐ๊ธ ๋ ๊ณต๋ถ ํ ์์ ์
๋๋ค.
#5. ๊ตฌํ ์๋ฃ ์ดํ ๋๋ฒ๊น
๋ฒ๊ทธ :
โข
์ง๋ฌธ ๊ฒ์ํ ๋ฑ๋ก (QnARegisterView)์์, ์ ๋ชฉ๊ณผ ๋ด์ฉ์ด ๋น์ด์์ด๋ ์์ฑ์ด ๋๋ ๊ฒ
โข
์ง๋ฌธ ๊ฒ์ํ์ URL๋ก ๋ฌด๋จ ์ก์ธ์ค ํ ์, ํด๋น ํ์ด์ง๊ฐ ๋ณด์ฌ์ง๊ฒ ๋๋ ๊ฒ
๋๋ฒ๊ทธ :
โข
์ฒซ๋ฒ์งธ
โฆ
if๋ฌธ์ ์ถ๊ฐํ์ฌ null์ผ ๊ฒฝ์ฐ alert โ์ ๋ชฉ๊ณผ ๋ด์ฉ์ ๋ชจ๋ ์
๋ ฅํด์ฃผ์ธ์โ๋ฅผ ์คํ
โข
๋๋ฒ์งธ
โฆ
beforeEnter ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋จผ์ ๋ณด์ฌ์ค ์ ์๊ฒ ์์
#6. ํด๊ฒฐ ํด์ผ ํ ๋จ์ ๋ฌธ์
ํด๊ฒฐ ํด์ผ ํ ๋จ์ ๋ฌธ์ (Additional Work and debug) :
โข
๊ธ ์์ (modify)์์ beforeEnter๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ ๋์ง ์๋ ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋์ด ์์ต๋๋ค.
ํ์ง๋ง ๊ตฌ์ ํ๋ ๊ฒ์ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
๋ฌด๋จ ์ก์ธ์ค์ if(โ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋๋ค์ === โํด๋น ๊ฒ์๊ธ ์์ฑ์โ)๋ฅผ ์ถ๊ฐํ์ฌ
false์ผ ๊ฒฝ์ฐ no-acc-view ํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋ง๋ค ์๊ฐ์ด์์ต๋๋ค.
no-acc-view ์์
ํ๋ก์ ํธ ๋ง๊ฐ์ด ์ผ๋ง ๋จ์ง ์์์ ์ผ๋จ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ณด๋ด๋ ๊ฒ์ผ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
โข
์ด๋ฏธ์ง โ1โ์ด ์ ์ฅ๋ ๊ฒ์๋ฌผ์ ์ด๋ฏธ์ง โ2โ๋ก ์์ ์, DB์ ์ด๋ฏธ์ง โ1โ์ด ์ง์์ ธ์ผ ํฉ๋๋ค.
โข
๋๊ธ์ ๋๋๊ธ์ ์์ฑํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
โข
์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ ์์ฑ์ ํน์ ์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ์ ์ฝ์๋, ๋ด์ฉ์ ํฐํธ ํฌ๊ธฐ๊ฐ ์์ต๋๋ค.
โข
AWS S3 TEST ๋ฐ ๊ตฌํ์ ํด์ผํฉ๋๋ค.
โข
๊ฒ์๊ธ์ด ๋ฑ๋ก๋๋ ์์๋ฅผ ASC๋ก ๋ณ๊ฒฝ ํด์ผํฉ๋๋ค.
โข
๊ฒ์๊ธ ๋ฑ๋ก์ ๊ฐ๋ ์๋ก๊ณ ์นจ์ ํด์ผ ๊ฒ์๊ธ์ด ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ์์ ํด์ผํฉ๋๋ค.
โข
๊ฒ์๊ธ ๋ฑ๋ก์ ์ด๋ฏธ์ง ์
๋ก๋ ๊ท์น์ ์งํจ์ฑ๋ก ๋ณธ๋ฌธ์ ์์๋ฅผ ๊ธฐ์ตํด์ ์์๋๋ก ์ถ๋ ฅ์ด ๋์ด์ผํฉ๋๋ค. (์บ๋ฌ์
์ญ์ ) (ex : ๊ธ, ์ด๋ฏธ์ง, ๊ธ ์ด๋ฏธ์ง)
โข
๋ณธ๋ฌธ์ ๋ฌธ์์ด์ด ์ข์ธก ์ ๋ ฌ๋ก ์์ ๋์ด์ผ ํฉ๋๋ค.
โข
์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒ์๊ธ์ ๋น ์บ๋ฌ์
(empty carousel borderline)์ ์ ๊ฑฐ ํด์ผํฉ๋๋ค.