[ ๋ฐ์ดํฐ๋ฒ ์ด์ค H2 ์ค์น ๋ฐ ์ฐ๋, JPA ์ฐ๋ํ๊ธฐ ]
Spring - [intelliJ,Thymeleaf] MAC, H2๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๋๊ธ์ฐฝ ๋ง๋ค๊ธฐ(2)
[ ๊ฐ๋จํ ๋๊ธ์ฐฝ ๋ง๋ค๊ธฐ (1) ] Spring - [intelliJ,Thymeleaf] ๊ฐ๋จํ ๋๊ธ์ฐฝ ๋ง๋ค๊ธฐ(1)[ @PostMapping์ผ๋ก ๋๋คํ ์ซ์ 6๊ฐ ์ ๋ฐ์ดํธํ๊ธฐ ] Spring - [intelliJ,Thymeleaf] @PostMapping์ผ๋ก ๋๋ค ์ซ์ 6๊ฐ ์ ๋ฐ์ดํธํ๊ธฐ[
post-this.tistory.com
[ @PostMapping์ผ๋ก ๋ก๋ ์ซ์ ์ถ๋ ฅํ๊ธฐ. ]
Spring - [intelliJ,Thymeleaf] @PostMapping์ผ๋ก ๋๋ค ์ซ์ 6๊ฐ ์ ๋ฐ์ดํธํ๊ธฐ
[ ๋ก๋, ๋ฒํผ ๋๋ฌ ๋๋คํ ์ซ์ 6๊ฐ ์ถ๋ ฅํ๊ธฐ(2) ] Spring - [intelliJ,Thymeleaf] ๋ก๋, ๋ฒํผ ๋๋ฌ ๋๋ค ์ซ์ 6๊ฐ ์ถ๋ ฅํ๊ธฐ(2)[ ๋ก๋, ๋ฒํผ ๋๋ฌ ๋๋คํ ์ซ์ 6๊ฐ ์ถ๋ ฅํ๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋ก๋, ๋ฒ
post-this.tistory.com
๋๋ค ์ซ์ 6๊ฐ๋ฅผ
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉํ์ฌ ๋ณต์ฌํ๊ธฐ.
1. ๋์ํ๋ฉด๊ณผ ์ ์ฒด์ฝ๋
๋์ํ๋ฉด
์ ์ฒด์ฝ๋
GitHub - hyeong-ing/LuckyLotto: ๋ก๋ ๋ฒํธ๊ฐ ์ถ๋ ฅ๋๋ ์น์ฌ์ดํธ์ ๋๋ค.
๋ก๋ ๋ฒํธ๊ฐ ์ถ๋ ฅ๋๋ ์น์ฌ์ดํธ์ ๋๋ค. Contribute to hyeong-ing/LuckyLotto development by creating an account on GitHub.
github.com
2. ์ด๋ป๊ฒ ๋ง๋ค์ง ์๊ฐํ๊ธฐ.
๊ฐ์ฅ ๋ํญ์ ๊ฒช์๋ ๋ถ๋ถ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ต๋ํ ํ ์ ์๋ ๋งํผ ํด๋ณด๋ คํ์ง๋ง ์ ๋ณด๊ฐ ๋๋ฌด ์์๋ค. ๊ฒฐ๊ตญ Chat-GPT์ ๋์๊น์ง ๊ตฌํด๋ดค์ง๋ง... Chat-GPT๋ ๊ทธ๋ฅ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐ๋ผ๊ณ ํ๋ค. ์ผ๋จ ๋ชฉํํ ๊ธฐ๋ฅ๊น์ง ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฒ์ด ์ค์ํ๊ณ , ์ด์ฐจํผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถํ๋ ค๊ณ ํ๊ธฐ์ ๊ธฐํ๋ก ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ธฐ๋ฅ์ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ์ง์์ด ์ ๋ฌดํ๋ค๋ ๊ฒ. ๊ณต๋ถ๋ฅผ ํ๋ ค๊ณ ํด๋ ๋ฌด์จ ๊ตฌ์กฐ์ธ์ง ๋ชจ๋ฅด๊ฒ ๊ณ ๋ฌด์๋ณด๋ค ๋ณต์ฌํ๊ธฐ ๊ธฐ๋ฅ์ ๋์ฒด์ ์ผ๋ก ํ ์คํธ์ ํด๋นํ๋ ์ ๋ณด ๋ฟ์ด์๋ค. ๋๋ List์ ์๋ 6๊ฐ์ง ์์๋ฅผ ๋ฐ์ ๋ณต์ฌํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ์๊ฑด๋ฐ, ๋ฌธ๋ฒ์ ์์ ๋ชจ๋ฅด๋ ์ด๋ป๊ฒ ์ฐพ์๋ณด๊ณ ์์ฉํด์ผํ ์ง ๋ง๋งํ๋ค.
์๋ก ์ด ๊ธธ์๋ค. ๋ณ๋ช ์ ์๊ฐ์ ๊ฐ์ ธ์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฒฐ๋ก ์ ๋งํ์๋ฉด ์ด ๊ธฐ๋ฅ์ GPT๊ฐ ๋ง๋ค์๋ค. ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์๋ฅผ ์๊ฐํ ํ ๋ค์ ํ์ ์ ์๋ํ ๊น๋ผ๋ ๊ณ ๋ฏผ๋ ์์๋ค. ํ์ง๋ง ์ด๋ฉด์ ์์ ์ ๋ํ ๋น ๋ฅธ ๊ฐ๊ดํ๋ ๋งค์ฐ ์ค์ํ๋ค ์๊ฐํ๋ค. ํ์ฌ ๋๋ ์ฝ๋๋ฅผ ๋ง๋ค ๋ฅ๋ ฅ์ด ์๊ณ , ์ธ์ ๋ ๋๊ตฐ๊ฐ์ ์ฝ๋๋ฅผ ๋ฐ์ ๊ณต๋ถํ์๋ ๊ฐ์ฅ ํฐ ๊ฑธ์์ ๋์๊ฐ์ผ๋ GPT๊ฐ ๋ง๋ค์ด์ค ์ฝ๋๋ฅผ ํ ๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํด๋ณด๋ ค ํ๋ค.(๋๋ด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์๋ ์๊ฐํด๋ด์ผ๊ฒ ๋ค.)
๊ฒฐ๋ก : ์ด ๊ธฐ๋ฅ์ GPT๊ฐ ๋ง๋ค์๋ค.
โก ๋ณต์ฌํ๊ธฐ ์ด๋ฏธ์ง ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฐ 6๊ฐ์ ์์๋ค์ด ๋ณต์ฌ๋๋ค.
<img src="css/copy.png" alt="copy" class="image">
copy.png๋ฅผ ๋ฃ์๋ค. ์ด ์ด๋ฏธ์ง๋ฅผ ๋๋ฅด๋ฉด ๋ณต์ฌํ๊ธฐ๊ฐ ์คํ๋๋๋ก ๋ง๋ค๊ณ ์ถ๋ค.
List ํํ์ธ 6์๋ฆฌ ์ซ์๊ฐ ๋ณต์ฌ๋๋ ๊ฒ์ด๋ค.
3. node.js ์ค์นํ๊ธฐ. (์ด ๊ธฐ๋ฅ๋ง ์ํํ ๊ฑฐ๋ฉด ์ค์น ์ํด๋ ๋ฉ๋๋ค.)
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ ํ ๋ชจ๋ฅด๋ ๋๋ ๋ฌด์์ node.js๋ฅผ ์ค์นํ๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ๋ง ์ํํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด ์ด ๋ถ๋ถ์ ์ดํํ์ง ์์๋ ๋๋ค.
์คํ๋งMVC๋ ๊ธฐ๋ณธ์ ์ผ๋ก JavaScript ํ์ผ์ ์ ์ ํ์ผ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ๊ฑฐ๊ธฐ๋ค ํ์ฌ ํ๋ก์ ํธ์๋ ThymeLeaf๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์ node.js๋ ํ์ํ์ง ์์ผ๋ฉฐ, ๊ฐ๋จํ ๊ธฐ๋ฅ๋ง ์ํํ๋ ๊ฒฝ์ฐ๋ node.js ์ค์น๊ฐ ํ์ํ์ง ์๋ค.
โก ๋งํฌ ๋ค์ด๊ฐ๊ธฐ.
Node.js — Run JavaScript Everywhere
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
โก ๋ฉ์ธ ํ๋ฉด ์ Download(LTS) ๋๋ฅด๊ธฐ
LTS ๋ฒ์ ์ด Long Temp Support๋ก ์ฅ๊ธฐ๋ก ๊ด๋ฆฌํ๋ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ LTS ๋ฒ์ ์ผ๋ก ๋ค์ด๋ฐ์ ๊ฒ์ ์ถ์ฒํ๋ค.
โก ์ค์นํ๊ธฐ (ํ๋๋๋ก ํ์๋ฉด ๋ฉ๋๋ค.)
โก ํฐ๋ฏธ๋์ ๊ฐ์ ์ค์น ํ์ธํ๊ธฐ.
node -v ์ ๋ ฅ
โก node.js๋ ๋ฌด์์ธ๊ฐ?
node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์์ด๋ค. ์ฌ๊ธฐ์ ๋ฐํ์์ ํน์ ์ธ์ด๋ก ๋ง๋ ํ๋ก๊ทธ๋จ๋ค์ ์คํํ ์ ์๋ ํ๊ฒฝ์ ๋ปํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ HTML์ ์ข ์๋์ด ์๋ ์ธ์ด๋ก HTML ์กฐ์๊ณผ ๋ณ๊ฒฝ์ ์ํด ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ํด์์ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ ๋ธ๋ผ์ฐ์ ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑด๋ฐ, node.js๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ๊ณณ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
node.js๋ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด์ ์ฑํ ์๋น์ค์ ๊ฐ์ด ์์ฒญ์ด ํ๋ฒ์ ๋ง์ด ๋ค์ด์ฌ ์ ์๋ ๊ณณ์ ์ฉ์ดํ๋ค. ์์ฒญ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋ ์์ฒญ์ ํ๋ฒ์ ๋ฐ์ ์์๋ฅผ ์๊ดํ์ง ์๊ณ ์๋๊ฐ ๋น ๋ฅธ ๊ฒ๋ถํฐ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋ ๊ธฐ์ ๊ณ ๊ฐ์ด ์์ ์ ์์๊ฐ ์ฌ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋๋ค.
4. ์๋ฐ์คํฌ๋ฆฝํธ ๋ถ์ํ๊ธฐ.
document.addEventListener("DOMContentLoaded", () => {
document๋ ์นํ์ด์ง ์์ฒด๋ฅผ ์๋ฏธํ๋ค. HTML ์์์ ์ ๊ทผํ๊ณ ์ ํ ๋ ๋ฌด์กฐ๊ฑด ์จ์ผํ๋ค. addEventListener๋ ์ด๋ค ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ๋ ๊ฒ์ธ๋ฐ, document.์ ๋ถ์ด์์ผ๋ ๋์ ์ด๋ค ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ค๊ณ ํ๋ค๋ ๊ฑธ ์ ์ ์๋ค. ์ด์ "DOMContentLoaded"๋ฅผ ๋ณด๋ฉด ๋์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ์ ์ ์๋ค. "DOMCotentLoaded"๋ ๋ํธ๋ฆฌ ๊ตฌ์ฑ์ด ์์ ํ ๋๋ ํ ๋์ ์ ๊ทผํ๋๋ก ํ๋ค. ๊ทธ๋ก ์ธํด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค๋ฅ ๋ฐ์์ ๋ฐฉ์งํด์ค๋ค.
ํฉ์ณ์ ์์ ์ฝ๋๋ฅผ ์ค๋ช ํ์๋ฉด, HTML์ ์ ๊ทผํ ๊ฑด๋ฐ(document) ๋ํธ๋ฆฌ ๊ตฌ์ฑ์ด ์์ ํ ๋๋ ํ ๋์ ์ ๊ทผํ๋("DOMContentLoaded") ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ฒ ๋ค(addEventListener)
์ฌ๊ธฐ์ ๋ํธ๋ฆฌ๋ HTML์ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ ๊ฒ์ผ๋ก, ๋ํธ๋ฆฌ ๊ตฌ์ฑ์ด ์์ ํ ๋๋ ํ๋ผ๋ ๊ฒ์ HTML์ ์๋ ๋ ธ๋๋ค์ธ <body> <h1> ๋ฑ์ด ๋ชจ๋ ๊ตฌ์ฑ์ ์๋ฃํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋์ HTML ํน์ XML ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์กฐ์ํ ์ ์๋ ์ธํฐํ์ด์ค๋ค. ์นํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ HTML ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ์ฝ์ด๋ค์ฌ ๊ฐ์ฒด ๋ชจ๋ธ๋ก ๋ณํํ๋ฉฐ, ์ด๋ฅผ ํตํด JavaScript ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ฌธ์๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ, ์ถ๊ฐ, ์ญ์ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ๋ํธ๋ฆฌ ๊ตฌ์ฑ์ด ๋๋ ํ ๋์ ์ ๊ทผํ์๋ ๋ง์ HTML์ ๋ชจ๋ ๋ ธ๋๋ค์ ํธ๋ฆฌ๋ก ๋ง๋ ํ์ JavaScript๋ฅผ ์ํํ๋ผ ์ ๋๋ก ํด์ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
function copyNumbers()
function์ ํจ์๋ก ์๋ฐ์์ ๋ฉ์๋์ ๋น์ทํ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ํจ์๋ก copyNumbers๋ฅผ ์ ์ํ๋๋ฐ, copyNumbers๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ฉฐ ๋์์ ๋ฌถ์ ์ ์๋ค.
const numbers = Array.from(document.querySelectorAll(".second h1")).map(el => el.textContent.trim());
const numbersString = numbers.join(" ");
const์ ํจ๊ป ์ ์ธ๋ ๋ณ์๋ ๊ฐ์ด ํด๋น ๋ฒ์ ๋ด์์ ๋์ผํ๊ฒ ์ ์ง๋๋ค. ๊ฐ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ๋ค์ ์ ์ธํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ธ๋ ๋ธ๋ก ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค. ์๋๋ var๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ค. var์ ๊ฒฝ์ฐ ์ ์ธ๋ ๊ฐ์ด ๋์ผํ๊ฒ ์ ์ง๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ณค ํ๋ค. ๊ทธ๋์ let(์ ๋ฐ์ดํธ ๊ฐ๋ฅ, ์ ์ธ ๋ถ๊ฐ๋ฅ) ํน์ const(์ ๋ฐ์ดํธ, ์ ์ธ ๋ถ๊ฐ๋ฅ)๊ฐ ํ์ํด์ง ์ด์ ๊ฐ ๋๋ค.
document.querySelectorAll(".second h1")์ HTML์ ์๋ second ๋ถ๋ถ์ h1์ ์ฟผ๋ฆฌ๋ฅผ ๋ชจ๋ ์ ํํ ํ, Array.from์ ํตํด NodeList๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ ํ map์ ๊ฐ ๋ฐฐ์ด์ ์์๋ฅผ ์ฒ๋ฆฌํ ํ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋๋ฐ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ฉด el์ map์ ์ํด ์ฎ๊ฒจ์ง ๊ฐ ๋์ ์์๊ฐ ๋๋ฉฐ, second์ ์๋ ๋ชจ๋ h1์ ์ ํํ๋คํ์ผ๋ ๊ทธ ์์๋ค์ด map์ ์ํด el๋ก ์ฎ๊ฒจ์ง ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ el์ textContent.trim์ ์ํํ๊ฒ ๋๋ค.
textContent๋ <h1> </h1> ํ๊ทธ ์ ํ ์คํธ ์ปจํ ์ธ ๋ฅผ ๊ฐ์ ธ์จ๋ค. HTML์ ์ดํด๋ณด๋ฉด <h1 th:text="${Number1}"> RandomNumber</h1>์ผ๋ก ๋์ด์๋ค. ์ด ํ ์คํธ ์์ ๋ค์ด๊ฐ๋ ๊ฒ์ Number1์ ๋ค์ด๊ฐ ์ซ์์ผํ ๋ ์ซ์๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ ๊ฒ์ด๋ค. .trim์ ๋ฌธ์์ด ์ข์ฐ์ ์๋ ๊ณต๋ฐฑ์ ์์ ์ค๋ค.
๋ง์ฝ 1,2,3,4,5,6์ด๋ ์ซ์๊ฐ ๋ก๋ ๋ฒํธ๋ก ๋์๋ค๊ณ ๊ฐ์ ํ์. ๊ทธ๋ฌ๋ฉด ํ์ฌ "1" , "2" , "3" , "4" , "5" , "6" ์ด๋ฐ ํํ๋ฅผ ๋๊ณ ์์ ๊ฒ์ด๋ค.
Array ์ธ์คํด์ค์ join( ) ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ผํ๋ ์ง์ ๋ ๊ตฌ๋ถ ๋ฌธ์์ด๋ก ๊ตฌ๋ถํ์ฌ ์ฐ๊ฒฐํ ์ ๋ฌธ์์ด์ ๋ง๋ค์ด ๋ฐํํ๋ค. ์ด์ "1 2 3 4 5 6"์ผ๋ก numberString์ ์ฎ๊ฒจ์ง๊ฒ ๋๋ค. ๋ง์ฝ (" ") ๋์ด์ฐ๊ธฐ๋ฅผ ํฌํจํ์ฌ ๋ฌธ์์ด์ ๊ตฌ๋ถํ๋ค๋ ๊ฒ์ด๊ณ , ("")๋ผ๊ณ ์ง์ ํ๋ฉด "123456" ํ์์ผ๋ก ๋์ด์ฐ๊ธฐ ์์ด ๋์ด๋ ๊ฒ์ด๋ค.
navigator.clipboard.writeText(numbersString).then(() => {
alert("๋ญํค ๋ก๋ ์ซ์ ๋ณต์ฌ ์๋ฃ!");
}).catch(err => {
console.error("๋ณต์ฌ ์คํจ:", err);
alert("๋ณต์ฌ์ ์คํจํ์ต๋๋ค.");
});
}
navigator.clipboard.writeText๋ Clipboard API๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. Clipboard API๋ Promise ๊ธฐ๋ฐ์ผ๋ก ํด๋ฆฝ ๋ณด๋ ๋ด์ฉ์ ๋น๋๊ธฐ์์ผ๋ก ์ ๊ทผํ ์ ์๋ ์๋ก์ด API๋ก ๊ฐ๋จํ๊ฒ ๋ด๊ฐ ์ํ๋ ์์ ์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ค. ์ฌ๊ธฐ์ writeText ๋ฉ์๋๊ฐ ๋น๋๊ธฐ ํจ์๋ก Promise๋ฅผ ๋ฆฌํดํ๋ค. ๋จ, ๊ถํ์ด ์๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ฑํ ๋์ด์๋ ์ํ์์๋ง ๊ฐ๋ฅํ๋ค.
numberString์ write๋ฅผ ์ ์ํํ๊ฒ ๋๋ฉด ๊ทธ ๋ค์์ then ๋ฉ์๋ ์ธ์๋ก ๋๊ฒจ์ค๋ค. ์ฌ๊ธฐ์ alert์ธ ๊ฒฝ๊ณ ๋ํ ์์์ ํ์ํ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ์ค์ ํ๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ฉด "๋ญํค ๋ก๋ ์ซ์ ๋ณต์ฌ ์๋ฃ!" ๋ผ๋ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
catch๋ฅผ ํตํด ์์ธ๋ฐ์์ง์ ์์ alert๊ฐ ๋ฐ์ํ๋๋ก ํ๋ค. ์ค๋ฅ๋ console.error๋ก ์ถ๋ ฅํ๋๋ก ํ๋๋ฐ, "๋ณต์ฌ ์คํจ"๋ผ๋ ๋ฉ์์ง๋ ๊ฐ๋ฐ์๊ฐ ๋ณด๊ฒ๋๋ค. ๊ทธ๋ฆฌ๊ณ err์ ์ค์ ์ค๋ฅ์ ๋ํ ๊ฐ์ฒด๋ฅผ ๋ด๋๋ค. alert์ ๋ด๊ธด "๋ณต์ฌ์ ์คํจํ์ต๋๋ค." ๋ฉ์์ง๋ ์ฌ์ฉ์๊ฐ ๋ณด๊ฒ๋๋ค.
const copyImage = document.querySelector("img[alt='copy']");
if (copyImage) {
copyImage.addEventListener("click", copyNumbers);
}
const๋ ์๋ฐ์์ final๊ณผ ๋น์ทํ์ฌ ๊ฐ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์์ ํ ์ ์๋ค.(์ฐธ์กฐํ์ ์์ ๊ฐ๋ฅ) ์ด๋ฏธ์ง ํ๊ทธ ์ค alt ์์ฑ์ด copy๋ผ๊ณ ์ง์ ๋ ์ฟผ๋ฆฌ๋ฅผ ์ ํํ์ฌ copyImage๋ผ๊ณ ๋ณ์๋ช ์ ๋ถ์ฌ์คฌ๋ค. ๋ง์ฝ copyImage ๊ฐ์ฒด๊ฐ click์ด๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์์์ ์ ์ํ function์ธ copyNumbers๋ฅผ ์ํํ๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค.
์ฝ๊ฒ ๊ฐ์ถ๋ฆฌ๋ฉด copyImage๋ alt๋ฅผ copy๋ผ๊ณ ์ง์ ํ ๊ฒ์ด๊ณ ์ด๊ฒ ๋๋ฆฌ๋ฉด copyNumbers ๋ฉ์๋๋ฅผ ์ํํ๋ผ๋ ๊ฒ ๊ฐ๋ค.
Q. ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์๋ฐ๋์ ๋ค๋ฅด๊ฒ ์จ์ ์ ์ฌ์ฉํ๋ ๋ฐฉํฅ์ด ์กฐ๊ธ ๋ค๋ฅธ ๊ฒ ๊ฐ๋ค.
A. ๋ณดํต ์๋ฐ์์ ์จ์ ์ ๊ฐ์ฒด์ ํ๋๋ ๋ฉ์๋์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ทธ์ ํด๋นํ๋๋ฐ ์ฒด์ด๋์ด๋ผ๋ ์๋ฏธ๊ฐ ๋ ์ถ๊ฐ๋๋ค. ์ฒด์ด๋์ ๋ฉ์๋๊ฐ ์ด๋ค ๊ฐ์ ๋ฐํํ๋ฉด ๊ทธ ๋ฐํ๋ ๊ฐ์ ๋ค๋ฅธ ๋ฉ์๋์ ๋ฐ๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ์ด์ด์ฃผ๋ ๊ฒ์ด๋ค.
์์๋ฅผ ๋ค์ด๋ณด๋ฉด chocolate.sell(2); chocolate.buy(1); ๋ผ๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ chocolate.sell(2).buy(1);์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
5. HTML์ ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐ๊ฒฐํ๊ธฐ.
โก ๊ฒฝ๋ก ํ์ธํ๊ธฐ.
static๊ณผ css๊ฐ ๋ฐ๋ก ๋ถ๋ฆฌ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ผ๋จ ํ์ฌ ํ๋ก์ ํธ๋ ์ ์ ๋ก ํฉํด์ก๋ค. js ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ๋ก ์๋ง๋ค๊ณ css์ ๊ฐ์ด ๋ฃ์ด์ ๊ทธ๋ฐ๊ฑด์ง ์ด๋ฐ์ ๊ฒฝ๋ก ์ธ์์ ์ ๋ชปํ๋ค. ๊ทธ๋์ js ๋๋ ํ ๋ฆฌ ํ์์ copy.js๋ฅผ ๋ฃ์๋ค.
โก ๊ฒฝ๋ก ์ฐ๊ฒฐํ๊ธฐ.
<head>
<meta charset="UTF-8">
<title>๋ญํค๋นํค ๋ก๋</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<script src="css/js/copy.js" defer></script>
</head>
6. ๋ง๋ฌด๋ฆฌํ๊ธฐ
โก ์ด๊ธฐ ๊ตฌ์
์ด๋ฐ ๊ตฌ์์์๋ ์์ฃผ ๊ฐ๋จํ๊ฒ ํ ์์ ์ผ๋ก ๋๊ธ์ฐฝ์ ์์๋ค. ํ๋ก์ ํธ๋ฅผ ํ๋ค๋ณด๋ ๋ ํฌ์งํ ๋ฆฌ์ ๋ํ ์ดํด๋๋ฅผ ํค์ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ์ค๊ฐ์ ๋ง๋ค๊ฒ ๋์๋ค. ๋น์ทํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ต๋ํ ๋
ธ๋ ฅํ๋ค. ์ ์๋ ์ง๋ ๋ชจ๋ฅธ๋ค๊ณ ์๊ฐํ์ง๋ง, ์ด๋ฐ์ ๊ธฐ๋ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ข์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ ๊ฒ ๊ฐ๋ค.
โก ๋ณํ
(1)
(2)
(3)
โก ๋ง๋ฌด๋ฆฌํ๋ ๋ง
๋ธ๋ก๊ทธ ์์ฑ๋ง ์๋์๋ค๋ฉด ๋ ๋นจ๋ฆฌ ๋๋์ ๊ฒ ๊ฐ๋ค. ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด ์ ๋ง ๋ง์ ๊ฐ๋
์ ๋ฐฐ์ฐ๊ณ ์ด๋ค ๊ตฌ์กฐ์ธ์ง ์ ํํ๊ฒ ์๊ฒ๋๋ ์ด์ ์ ํ์คํ๋ค. ํ๋ ์์ฑํ๋๋ฐ ๋ช์๊ฐ์ฉ ๊ฑธ๋ฆฌ๊ฑฐ๋ค ๊ฐ๋ ์ดํด๊ฐ ๊ฐ์ง ์๋ ๊ฐ๋
์ ๋งํ๋ฉด... ์ ๋ง 2-3์ผ ์ ๋ ๊ฑธ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค. ๊ต์ฅํ ์ฌ์ด ํ๋ก์ ํธ์์ง๋ง ๊ทธ๋งํผ ์ด๋ค์์ผ๋ก ์ด๋ค์ง๋์ง ํ์คํ๊ฒ ์๊ฒ ๋ ๊ฑฐ ๊ฐ๋ค.
์คํ๋งMVC ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ ๊ฐ๋จํ๊ณ ์งง์ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๋๋ฐ ์ ๋ง ์ํ ์ ํ์ธ ๊ฒ ๊ฐ๋ค. ์ด์ ์คํ๋งMVC ๊ฐ์๋ ๋ฃ๊ณ , ์๋ฐ์์ ์ ๋ณต ๋ธ๋ก๊ทธ๋ ์ด์ฌํ ์์ฑํ๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๊ฐํด๋ด์ผ๊ฒ ๋ค.
๐ชฝ
"ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค."
[ ๋ธ๋ก๊ทธ์ ์ด ๋ด์ฉ๋ค์ ์ถ์ฒ๋ ์๋์ ์ ์ด๋ํ ๋
๋ค์ด๊ฐ์ ์ฝ์ด๋ณด์๋ฉด ๋์ฑ ๋์์ด ๋์ค ๋ฏ ํฉ๋๋ค ]
[mac OS] node.js ์ค์นํ๊ธฐ
๐Node.js๋? - Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์์ ๋๋ค. ๐macOS์์ Node.js ์ค์น ๋ฐฉ๋ฒ 1. ์ฌ์ดํธ (https://nodejs.org/en ) ์ ์ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaSc
favonius.tistory.com
[๊ฐ๋ฐ ๊ธฐ๋ณธ ์ง์] Node.js๋?
"Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์์ ๋๋ค" ?? ๐ค๊ทธ๋์ ๋ญ๋ฐ์?
velog.io
์ฝ๋ฉ๊ต์ก ํฐ์จํผ์ค์ฟจ
4์ฐจ์ฐ์ ํ๋ช , ์ฝ๋ฉ๊ต์ก, ์ํํธ์จ์ด๊ต์ก, ์ฝ๋ฉ๊ธฐ์ด, SW์ฝ๋ฉ, ๊ธฐ์ด์ฝ๋ฉ๋ถํฐ ์๋ฐ ํ์ด์ฌ ๋ฑ
tcpschool.com
[JAVASCRIPT] addEventListener()
addEventListener()๋ documnet ์์์ event๋ฅผ ๋ถ์ฌํ ๋ ์ฌ์ฉ. addEventListener(event, ์คํํ ํจ์) ๋ก ์ ์ํ๋ค. ์ด 3๊ฐ์ง์ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ํ ์ ์๋ค. button.addEventListener('์ด๋ฒคํธ', ํจ์๋ช ) button.addEventListener('
ghrnwjd.tistory.com
[JavaScript] DOM์ด๋ ๋ฌด์์ธ๊ฐ?
JavaScript๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ ๋ํด์ ๋ฃ๊ฒ ๋ฉ๋๋ค. ์ฒ์๋ถํฐ ์ด ๊ฐ์ฒด๋ค์ด ...
blog.naver.com
[์๋ฐ์คํฌ๋ฆฝํธ] DOMContentLoaded ์ด๋ฒคํธ
์๋ ํ์ธ์! ์ด๋ฒ์๊ฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ DOMContentLoaded ์ด๋ฒคํธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.๋ํธ๋ฆฌ ๋ถ์์ด ๋๋๋ฉด ๋ฐ์์ฆ, ๋ํธ๋ฆฌ๊ฐ ๋ค ๋ง๋ค์ด์ง ํ์ ๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์, ๋์ด ์์ฑ๋๊ธฐ
velog.io
Javascript event ๋ค๋ฃจ๊ธฐ(eventListener๋ฅผ ์ฐ๋ ์ด์ )
event๋?? event๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์?? event listener vs event handler??
velog.io
JavaScript ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ ๋ฆฌ์ค๋(eventListener)
๋.. ์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ชจ๋ฅด๋ค โ addEventListener EventTarget ์ธํฐํ์ด์ค์ ๋ฉ์๋. ์ง์ ํ ์ ํ์ ์ด๋ฒคํธ๋ฅผ ์์ ํ ๋๋ง๋ค ํธ์ถํ ํจ์๋ฅผ ์ค์ ํ๋ค. = ํธ์ถ ์ ์ธ์๋ฅผ ์ ๋ฌ๋ฐ๋๋ค. ์ผ๋ฐ์ ์ธ ๋์ Element, Do
pottatt0.tistory.com
DOM ํธ๋ฆฌ
ko.javascript.info
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ ๋ชจ์
JavaScript | MDN
JavaScript (JS)๋ ๊ฐ๋ฒผ์ด, ์ธํฐํ๋ฆฌํฐ ํน์ just-in-time ์ปดํ์ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ์ผ๊ธ ํจ์๋ฅผ ์ง์ํฉ๋๋ค. ์น ํ์ด์ง๋ฅผ ์ํ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ์ ์๋ ค์ ธ ์์ง๋ง, Node.js, Apache CouchDB, Adobe Acrobat์ฒ๋ผ
developer.mozilla.org
[ ์๋ฐ์คํฌ๋ฆฝํธ ] trim()
trim() : ๋ฌธ์ฅ(๋ฌธ์์ด, string)์์, ์๋์ ์๋ ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ค. ์ต์คํ๋ก๋ฌ(ie) 9 ์ด์ & ๊ทธ์ธ ๋ธ๋ผ์ฐ์ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ํจ์์ด๋ค. "trim()"์ผ๋ก, " "๋ฅผ ์ญ์ ํ๋ ค๋ฉด, "textContent"๋
tonks.tistory.com
[์๋ฐ์คํฌ๋ฆฝํธ] javascript map() ์ฌ์ฉํ๊ธฐ
[์๋ฐ์คํฌ๋ฆฝํธ] javascript map() ์ฌ์ฉํ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ์์ for๋ฌธ์ ๋จ์ฉ์ ๋ง๊ธฐ์ํด ๋ง๋ค์ด๋ธ ๋ฐฐ์ดํจ์! ๋ฐฐ์ด ์์๋ฅผ ์ํํ๋ฉฐ ์ด๋ ํ ๊ฐ๊ณต์ ๊ฐํ๊ฑฐ๋, ๋ฐฐ์ด์์ ์์ ์์๋ฅผ ์ถ์ถํ๊ฑฐ๋ ํ ๋
devinserengeti.tistory.com
Clipboard API ์ฌ์ฉํ๊ธฐ
๊ธฐ์กด์ ์จ์ด๋ธ์จ์์ ์๋ฆฌ๋จผํธ์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ ๊ฐ์ ํญ ๋ด์์๋ง ๊ฐ๋ฅํ๋ค. ๊ทธ ์ด์ ๋ ๊ธฐ์กด์๋ ํด๋ฆฝ๋ณด๋๊ฐ ์๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ์ธ Vuex๋ฅผ ํ์ฉํด ๋ณต์ฌ๊ฐ ๋ ์๋ฆฌ๋จผํธ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌ ํ
velog.io
๐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ธ ์ฒ๋ฆฌ(Exception)
์์ธ (exception) ํ๋ก๊ทธ๋๋ฐ์์ ์์ธ(exception)๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์์ ์๊ธฐ์น ๋ชปํ ์ํฉ์ด ๋ฐ์ํ์ฌ ๋ ์ด์ ์งํํ ์ ์๋ ์ํฉ์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ์ด๊ฑฐ๋ ํ์ผ์ ์ฐพ์ ์ ์
inpa.tistory.com
[JavaScript] Method Chaining (๋ฉ์๋ ์ฒด์ด๋)
๊ณผ์ ๋ฅผ ํ๋ ์ค ํจ์์ return๊ฐ์ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด ์๋๋ฐ๋ this๋ฅผ returnํ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ค. ํ์ฅ์ฑ์ ์ํด return์ ํด๋ ๊ฒ์ธ๊ฐ? ๋ผ๋ ์๊ฐ์ด ๋ค์๋๋ฐ ๊ฒ์ํด๋ณด์๋ ๋ช ํํ ํด๋ต์ ์ฐพ์ง ๋ชปํ
developerntraveler.tistory.com