์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์ด๋ฏธ์ง ์์
- router v6
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- ๋ฐฑ์ค
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ์๊ณ ๋ฆฌ์ฆ
- ์นด์นด์ค
- ์ฝ๋ฉํ ์คํธ
- js
- ์นด์นด์ค์ฑ์ฉ
- ๋๋๊ทธ ์ด๋ฒคํธ
- TypeScript
- ํ๋ก๊ทธ๋๋จธ์ค
- React
- ๋ธ๋ฃจํธํฌ์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- Redux toolkit
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ฝ๋ ํฌ๋ฉง
- icecandidate
- ์ฝํ
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- custom hook
- Node.js
- JavaScript
- ๊ณผ์ ํ ์คํธ
- ๋์ ๊ณํ๋ฒ
- ๋ฆฌ๋์ค ํดํท
- DP
- ์ด๋ถํ์
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (100)
๐ฅ dev-ruby
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dFrqES/btrbahFqOgn/V8y42WEXqWOkF80r8JjVo0/img.jpg)
1. input์ ์ ๋ ฅํ ๊ฐ ์์๋ด๊ธฐ ์ฌ์ฉ์๊ฐ input์ ๊ฐ์ ์ ๋ ฅํ ๋๋ง๋ค ์คํ๋จ @input="$event.target.value" //e.target.value๋ ๊ฐ์๊ฑฐ์ 2. input์ ์ ๋ ฅํ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ์ฅํ๊ธฐ ๋ฐ์ดํฐ์ ๋ฑ๋ก data(){ return{ month : 1, } }, ์ ์ฅํ๊ธฐ ์ฌ์ฉํ๊ธฐ - {{ }}์์ ์์ผ๋ฏ๋ก ์ค๋ณตํด์ {} ์์จ์ค๋ ๋จ {{์๋ฃธ๋ค[clicked].price * month }} 3. ์ถ์ฝ๋ฒ์ ์ ์ ๊ฐ ์ ๋ ฅํ ๊ฐ์ด month๋ก ์ ์ฅ๋จ , ๋ฑ๋ฑ์๋ ์ ์ฉ ๊ฐ๋ฅ 4. input๊ฐ์ ์ซ์๋ก ์ ์ฅํ๊ธฐ โ input์ ์ ๋ ฅํ ๊ฐ์ ์ ๋ถ ๋ฌธ์์๋ฃํ์ผ๋ก ์ ์ฅ๋๋ค โ {{์๋ฃธ๋ค[clicked].price month }} ์ฌ๊ธฐ์ ๋์ +๋ก ์ฐ๋ฉด input์ ๋ฌธ์ํ์ผ๋ก ์ ์ฅ๋๊ธฐ ๋..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/AUAwm/btrbljh5oxZ/akjyPZKZ94dZEZyvpwnQu1/img.jpg)
1. $emit() : ๋ถ๋ชจ์๊ฒ ๋ฉ์ธ์ง ์ฃผ๊ธฐ ๋ถ๋ชจ์ปดํฌ๋ํธ์์ ์ด ์์ํ๊ทธ์ @click๋ฃ์ด์ฃผ๊ธฐ -> but, ์์์ ์ด๋ ๋๋ฌ๋ click์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฒ์ ==> ์์์ปดํฌ๋ํธ ์์ ํ๊ทธ์ @click="$emit('์๋ช ๋ฐ์ดํฐ', ์์ฒญ๋ฐ์ดํฐ)" ํด๋ฆญํ๋ฉด ๋ถ๋ชจ์๊ฒ ๋ฉ์ธ์ง๊ฐ ๊ฐ๋ค 2. @๋ฐ์ดํฐ="" : ๋ถ๋ชจ๊ฐ ๋ฉ์ธ์ง๋ฅผ ๋ฐ๋๋ฒ ํ๋ฉด ์์์๊ฒ ๋ชจ๋ฌ์ฐฝ์ด๋ ธ๋=true ๋ฉ์ธ์ง๊ฐ ์ ์ก๋๋ค 3. $event : ๋ถ๋ชจ๊ฐ ์์์ด ๋ณด๋ธ ๋ฐ์ดํฐ ์ฐ๋ ๋ฒ @openModal="๋ชจ๋ฌ์ฐฝ์ด๋ ธ๋=true; clicked=$event" ์์์์ ๋ณด๋ธ '์์ฒญํ๋ฐ์ดํฐ'๊ฐ clicked๋ก ์ ๋ฌ๋ผ์ openModal์ ํตํด ๋ค์ ์์ํํ ๋ณด๋ด์ค๋ค. 3-1. $emit์ ํจ์ ์์์ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด methods : { ํจ์(){ this.$e..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bo4qR5/btrbgnS1pGj/ZNGTuyzfAqYrCGZWkkndtK/img.jpg)
< + Enter vue๊ธฐ๋ณธ ํ ์๋์์ฑ vue์ฝ๋ ์น๋ธ๋ผ์ฐ์ ์คํ npm run serve webpack - vue์ฝ๋ ์น๋ธ๋ผ์ฐ์ ์คํ npm run dev
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m1r3N/btrbrUg0491/mjGKRUEzzWo2Kxpoae4p90/img.jpg)
1. ๋ค๋ฅธ vueํ์ผ importํด์ค๊ธฐ vueํ์ผ ๋ง๋ค์ด์ HTML๋ง๋ค๊ธฐ ์ํ๋ ๊ณณ์ scriptํ๊ทธ ์ฌ์ด์ import ์ด๋ฆ from '๊ฒฝ๋ก'; export default์์ component์ ์ธ ์ด๋ฆ: ๊ฐ์ ธ์จ ์ด๋ฆ => DC : Discount or ๊ฐ์์ด๋ฆ ์ธ๊ฑฐ๋ฉด ์ด๋ฆ ํ๋๋ง ์ ์ด๋๋จ => Discount ๋ก ์ฌ์ฉํ๊ธฐ 2. props : ๋ถ๋ชจ๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์ถ์ ๋ App.vue์ ์ฐ์ธ ๋ App์ ์์ ์ปดํฌ๋ํธ์ props๋ก ์์์๊ฒ ๋ฐ์ดํฐ ๋ณด๋ด๋ ๋ฒ 1. ๋ฐ์ดํฐ ์ ์ก ๋ฐ์ ๋ฐ์ดํฐ ๊ณจ๋ผ์ ๋ณด๋ด๊ธฐ or => :์๋ช ๋ฐ์ดํฐ="๋ณด๋ผ๋ฐ์ดํฐ" :์๋ช ๋ฐ์ดํฐ2="๋ณด๋ผ๋ฐ์ดํฐ2" ์ฌ๋ฌ๊ฐ ๋์ด ๊ฐ๋ฅ 2. ์์์ props๋ก ๋ฐ์ ๋ฐ์ดํฐ ๋ฑ๋ก props : { ์๋ช ํ ๋ฐ์ดํฐ : ์๋ฃํ์ด..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Gijtj/btrbq3Sxx3x/niMjStYOKHiAsFOmlJIIWK/img.jpg)
1. ํด๋ฆญํ ์ํ index ์ํ๋ณ๊ฒฝ 1. clicked : 0 ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ 2. 3. {{ ์๋ฃธ๋ค[clicked].title }} 2. v-if v-else-if v-else ๋ฌธ๋ฒ if ๊ฐ ์ฐธ์ด ์๋๋ฉด else if๋ก ๋์ด๊ฐ๊ณ ๊ทธ๊ฒ๋ ์ฐธ์ด ์๋๋ฉด else๋ก ๋์ด๊ฐ๋ค.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2Y4Of/btrbty5OW8v/2wKHiuKbage3OXDrKgMKQ1/img.jpg)
1. export/import ๋ฌธ๋ฒ ์ฐ๋ ๋ฒ ๋ณ์๋ฅผ ๋ด๋ณด๋ด๊ฒ ๋ค๋ ๋ป export default ๋ณ์๋ช ; ๋ณ์๋ฅผ ๋ฐ๊ฒ ๋ค๋ ๋ป import ๋ณ์๋ช from '๊ฒฝ๋ก'; ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ผ ํ์ผ์์ export๋ฅผ ํด์ค์ผ ๋ค๋ฅธ ํ์ผ์์ importํด์ ์ธ ์ ์๋ค 1-1. ๋ณ์๋ฅผ importํ๊ณ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋๋ค 2. ์ฌ๋ฌ๊ฐ์ ๋ณ์๋ฅผ export/importํ๋ ๋ฒ export {๋ณ์1, ๋ณ์2, ...} import {๋ณ์1, ๋ณ์2, ...} from '๊ฒฝ๋ก'; 3. ๋ฐ์ดํฐ ๊ฐ๋ค ์ฐ๋๋ฒ import data from '๊ฒฝ๋ก'; one : data, 3-1. object์ํ๋ ํญ๋ชฉ ์ฌ์ฉํ๊ธฐ one[i].title one[i].price 4. HTMLํ๊ทธ ์์ ์์ฑ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ :src="" or :hr..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/WhJNq/btrbosr2VvE/TGW0vCox3kusORxXm8zpK1/img.jpg)
1. ๋์ ์ธ UI๋ง๋๋ ๋ฒ 1-1. HTML, CSS๋ก ๋์์ธ ํด๋๊ธฐ ๋ชจ๋ฌ์ฐฝ์ ๊ธฐ๋ณธ๊ตฌ์กฐ ์์ธํ์ด์ง์ ์์ธํ์ด์ง ๋ด์ฉ์ body{ margin: 0; } div { box-sizing: border-box; } .black-bg{ width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); position: fixed; padding: 20px; } .white-bg{ width: 100%; background: white; border-radius: 8px; padding: 20px; } 1-2. UI์ ํ์ฌ ์ํ๋ฅผ ๋ฐ์ดํฐ๋ก ์ ์ฅํด๋๊ธฐ ๋ชจ๋ฌ์ฐฝ์ด๋ ธ๋ : false 1-3. ๋ฐ์ดํฐ์ ๋ฐ๋ผ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์์ฑ ๋ซ๊ธฐ
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cmViSW/btrbtoa584N/5EYQxktChadeFDGw8vjKh0/img.jpg)
1. ์ด๋ฒคํธ ํธ๋ค๋ฌ 1-1. ๋ฒํผ click => ์ถ์ฝ๋ฐฉ์ jsํจ์๋ช ๋์ ๋์ ์์ฒด๋ฅผ ๋ฃ์ด๋๋จ -> "์ ๊ณ ์ += 1" 1-2. ๋ฒํผ mouseover ํจ์ ์์์ ๋ฐ์ดํฐ์ธ ๋ this.๋ฐ์ดํฐ๋ช 1-3. ์ด๋ฏธ์ง ๋ฃ๊ธฐ ์ ๋๊ฒฝ๋ก - http:/ ๊ทธ๋ฅ ๋ฃ๋๋ค ์๋๊ฒฝ๋ก - ./assets/room0.jpg ๋ฌด์กฐ๊ฑด ./๋ก ์์ํ๋ค
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YIOxe/btrbpQszc5y/hVDmK2GS6gzMBgjmTalkE0/img.jpg)
1. v-for ๋ฐ๋ณต๋ฌธ ๋ชจ๋ HTMLํ๊ทธ์ ์ ์ฉ๊ฐ๋ฅํ๋ค ex ) :key์ ์ฉ๋ -๋ฐ๋ณต๋ฌธ์ธ ๋ ๊ผญ ์จ์ผํ๋ค -๋ฐ๋ณต๋ฌธ ๋๋ฆฐ ์์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ 1-1. v-for๋ฅผ ํ์ฉํด ํ ํ๋ฆฟ์ ๋ณ์์ถ๋ ฅ menus : [' ', ' ', ' '] 1๋ฒ {{ menu }} 2๋ฒ {{ menus[i] }} 1-2. 2๊ฐ์ ๋ณ์ ๊ฐ๋ฅ {{ menu }}โ menu๋ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๊ฐ ๋๊ณ , i๋ ์ธ๋ฑ์ค๊ฐ ๋๋ค -> 2๊ฐ์ฐ๋ ค๋ฉด ๋ค์ ๊บผ๋ฅผ key์ ๋ฃ์ด์ค์ผํจ ์์ {{ product }} {{ price1 }}๋ง์ ํ์๋งค๋ฌผ์ ๊ณ ์ ๊ณ ์ : {{์ ๊ณ ์}} {{ products[i] }} {{ price1 }}๋ง์ ํ์๋งค๋ฌผ์ ๊ณ ์ ๊ณ ์ : {{์ ๊ณ ์}} ํ์๋งค๋ฌผ์ ๊ณ ์ ๊ณ ์ : {{์ ๊ณ ์}}
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bllVm4/btrbpPf80uO/DAsabRI3DGTygCGcBOjf90/img.jpg)
1. vue ํ๋ก์ ํธ ์์ฑ ๋ช ๋ น vue create ํ๋ก์ ํธ๋ช App.vue๊ฐ ๋ฉ์ธํ์ด์ง๋ค. 2. ์น ๋ธ๋ผ์ฐ์ ๋ก ์คํํ๋ ๋ช ๋ น npm run serve 3. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ - ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ๋ฅผ HTML์ ๊ฝ์๋ฃ๋ ๋ฌธ๋ฒ vue์ ๋ฐ์ดํฐ ๋ณด๊ดํ๋ ๊ณณ export default{ name: 'App', data(){ return{ /* [์ฌ๊ธฐ์ ๋ฐ์ดํฐ ๋ณด๊ด] */ } }, methods : { ํจ์๋ช (){ }, }, component: { } } ๋ฐ์ดํฐ๋ object์๋ฃ๋ก ์ ์ฅํ๋ค. ==> { ์๋ฃ์ด๋ฆ: ์๋ฃ๋ด์ฉ } 4. ํ ํ๋ฆฟ์ ๋ฐ์ดํฐ ๋ฃ๋๋ฒ {{ ๋ฐ์ดํฐ์ด๋ฆ }} -> {{ }} ์๋ ๋ ๋๋ง์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค. 5. HTML์์ฑ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ค. 1. ๋ฐ์ดํฐ ๋ณด๊ด styleColor: 'col..