
์์ํ ๋ ์์ง ์ค๋น๋์์ง ์๋ค๋ ์๊ฐ์ ๋๋ ค์์ด ์ปธ์ง๋ง ๋ด๊ฐ ์คํ๋ ค ๋ฐฐ์๊ฐ๋ ๋ถ๋ถ๋ค์ด ๋ง์๋ ํฌ๋น์ ํ๋ก์ ํธ๋ค.
์ฒ์์ผ๋ก ํ ํ๋ก์ ํธ ํด๋ดค๋๋ฐ ์ด๋ฒ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์์ผ๋ก๋ ํ๋ก์ ํธ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํด์ผ๊ฒ ๋ค.
์ฐ๋ฆฌ ํ์ git branch์์ ์๋ฏธ๋ฅผ ๊ฐ์ ธ์ 4๊ฐ์ branch๊ฐ ํจ๊ปํ๋ค๋ ๋ป์ผ๋ก 4branch๋ผ ํ๋ช
์ ์ ํ๋ค.
4bsop ๋ทฐํฐ ๋ธ๋๋ ์น์๋น์ค
Aesop ์จ๋ผ์ธ ์ฌ์ดํธ๋ฅผ ๋ชจํฐ๋ธ
๊ธฐ๊ฐ & 4branch ๋ฉค๋ฒ
- 2023.04.03 ~ 2023.04.14 (2์ฃผ)
- ๊น์์ด(FE), ๋ฐ์ง์ฐ(FE), ์ฅ๋คํฌ(BE, Project Manager), ์๊ดํ(BE, Product Manager)
ํ๋ก์ ํธ ์ ์ ์ด์
- Aesop์ ๋ฐฐ๊ฒฝ์ด ์๋ ์ํ ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ์ฌ ๋ง์น ์ ํ์ ์คํ๋ผ์ธ์์ ์ผํํ๊ณ ์๋ ๋ฏํ ๊ฒฝํ์ ์ ๊ณตํ๋ค.
- ์ฌ์ฉ์์๊ฒ ๋ธ๋๋ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ถ๋ถ๋ค์ ๋ฒค์นํ๋ฉฐ, ์ผํ์ ํ์์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ค์ ์ผ๋ก ๊ตฌํํด๋ณด๊ณ ์ถ์ด ์ ํ
์ฌ์ฉํ ๊ธฐ์
์ฐ๋ฆฌ๊ฐ ํด๋ก ํ Aesop ์น์ฌ์ดํธ๋ ๋ก๋ฉ์ด ๊ธธ๊ณ , ๋ก๊ทธ์ธํ ๋๋ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๋ง์ ๋ถํธํ๊ฒ ๋๊ปด์ก์๋๋ฐ,
์ด๋ฒ ํ๋ก์ ํธ์์ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๋ ๋๋ง ํด์ค ์ ์๋ ๊ธฐ์ ๋ค์ ์ฌ์ฉํ์ฌ ์์
ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ฐ์ตํ๋ ๊ธฐ์ ๋ค์ ๋น ๋ฅธ ์๋๋ฅผ ๊ฒฝํํ ์ ์์๋ค.
- SPA(Single Page Application) ๋ฐฉ์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ ํ๋๋ฐ, ์ฌ๋ฌ web page ๋ฅผ ํ๋์ Html ์ ๋ด๊ธฐ ๋๋ฌธ์ ํ๋ฉด UI ๊ฐ ๋น ๋ฅด๊ฒ ๋ ๋๋ง ๋๋ค.
- React๋ ํ๋ฉด ๋ณํ๋ฅผ ๊ฐ์์ผ๋ก ๊ณ์ฐํ๊ณ ์ค์ DOM์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ์ฌ ์น๋ธ๋ผ์ฐ์ ์์์ ์ฐ์ฐ ์์ ์ค์ฌ์ฃผ์ด ํจ์จ์ ์ด๊ณ ์์ฐ์ ์ธ ์์ ์ด ๊ฐ๋ฅํ๋ค. JSX๋ฌธ๋ฒ์ ์ฌ์ฉํด ์ปดํฌ๋ํธ ๋จ์๋ก ์ชผ๊ฐ์ด ํ์ผ์ ๊ตฌ์ฑํ ์ ์์ด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- SCSS๋ ๊ธฐ์กด CSS์์ ๋ ๊ฐ๋ ์ฑ๊ณผ ์ฌํ์ฉ์ฑ์ ๋์ฌ์ฃผ๋ ์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด๋ก ํ์ด์ง์์ ์ด ๋ง์ ๊ฒฝ์ฐ ํจ์จ์ ์ด๋ค.
๋ด๊ฐ ๊ตฌํํ ์ฃผ์ ๊ธฐ๋ฅ
- ์ ํ ๊ฒ์
- ์ ํ ์์ธํ์ด์ง
- ์ฃผ๋ฌธ ๋ด์ญ
์ด ์ค์ ์ ํ๊ฒ์๊ณผ ์ฃผ๋ฌธ๋ด์ญ์์ ๋ค์ ๋์ง์ด๋ณด๊ณ ์ถ์ ์ฝ๋๋ค์ด ์์ด ์ ๋ฆฌํด๋ณด์๋ค.
โถ ๊ฒ์

๊ตฌํํ๋ ํ์ด์ง ์ค์ ๋น๊ต์ ์๊ฐ์ ๋ง์ด ์์ ๊ฒ์
๊ฒ์์์๋ ์ด 2๊ฐ์ ํ์ด์ผ ํ ๊ณผ์ ๊ฐ ์์๋๋ฐ
1. ๊ฒ์ ํ๋ฉด ์ง์ ์, default ๋ก ๊ฒ์๋ฆฌ์คํธ๊ฐ ๋ ธ์ถ๋์ง ์๊ฒ ํ์
2. ๊ฒ์๋ฆฌ์คํธ๋ฅผ ํธ๋ฒํ๋ฉด ์ธก๋ฉด์ ํด๋นํ๋ ์ํ์ ์ด๋ฏธ์ง์ ์ํ ์์ธ๋ก ์ด์ด์ง๋ ๋ฒํผ์ด ๋์ค๊ฒ ํ์
๋จผ์ ๊ฒ์๋ฆฌ์คํธ๊ฐ default๋ก ์ถ๋ ฅ๋๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค.
const [searchKeyword, setSearchKeyword] = useState('');
function itemSearch(e) {
setSearchKeyword(e.target.value);
}
<input value={searchKeyword} onChange={itemSearch}/>
<SearchList/>
input ์ value๋ searchKeyword,
๊ฒ์ํ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌ์คํธ๋ <SearchList/>๋ก ์ปดํฌ๋ํธ๋ก ๋ฌถ์ด์คฌ๋ค.
์ด๋ฐ์ ๋ฐ ๋ฐฉ๋ฒ์ ์๋ํด๋ดค์ง๋ง ์กด์ฌ๊ฐ์ด ํ์ฐ,,๐ฑ
์ฒ์์ ์กฐ๊ฑด๋ฌธ์ ์จ์ผํ ๊ฑฐ ๊ฐ๊ธดํ๋ฐ.. ํ๋ค๊ฐ
SearchList์ปดํผ๋ํธ๊ฐ searchKeyword์ ๊ธธ์ด๊ฐ 0๋ณด๋ค ํด ๋ ๋ํ๋ ์ ์๋๋ก &&์ฐ์ฐ์๋ฅผ ์ผ๋ค.
๊ทธ๋ฌ๋๋ ์ฒ์์ ๊ฒ์์ด๊ฐ ์ ๋์ค๋ ์ํ์์ input์ ๊ฒ์์ด๋ฅผ ์
๋ ฅํ ๋๋ง๋ค ์ํ์ด๋ฆ ๋ฆฌ์คํธ๊ฐ ๋จ๋ ํํ๋ฅผ ๋ง์ฃผํ ์ ์์๋ค!
{searchKeyword.length >0 && <SearchList/>}
์ด์ 2๋ฒ ๋ฌธ์ ๋ก ๋์ด๊ฐ๋ณด๋ฉด,
๊ฒ์๋ฆฌ์คํธ์ ๊ฒ์์ด๋ค์ ํธ๋ฒํ ๋๋ง๋ค ํด๋นํ๋ ์ํ ์ด๋ฏธ์ง์ ๋ฒํผ์ ์ถ๋ ฅํ๋ ๊ฑฐ์๋๋ฐ
ํธ๋ฒํ๋ฉด ์ํ์ด์ง์ ๋ฒํผ์ด ๋จ๊ธด ํ์ง๋ง ๋ค๋ฅธ ๊ฒ์์ด๋ฅผ ํธ๋ฒํ๋ฉด ์ํ์ด๋ฏธ์ง์ ๋ฒํผ์ด ์ฌ๋ผ์ง์ง ์๊ณ ๊ทธ ์์ ๊ณ์ ๋์ ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค.

๋ถ๋ก๊ทธ๊ธ ์ธ ๋๋ฅผ ์ํด์ ์๋ฌ ํ๋ฉด์ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์ฐ์ด๋์ผ๊ฒ ๋ค๋ ์๊ฐ์ด..
<div className="searchList">
{searchList.length ? (
searchList.map(item => {
return (<SearchItem className="searchItem" key={item.id} item={item} />)}))
: (<p className="noResult">๊ฒ์๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.</p>)}
</div>
);
}
๋จผ์ <SearchList />๋ฅผ map ๋๋ ค ๊ฒ์์ด ํ๋๊ฐ <SearchItem /> ์ปดํฌ๋ํธ๊ฐ ๋๋ค.
function SearchItem({ item }) {
const [isHover, setIsHover] = useState(false);
return (
<div className="searchItem" onMouseEnter={()=>{setIsHover(true)}}>
<div id={item.id}>
{isHover && <HoverItemView item={item}}
{item.name} //์ํ๊ฒ์์ด ๋ฆฌ์คํธ์ ํ๋์ ์ํ์ด๋ฆ
</div>
</div>
);
}
item์ props๋ก ๋ฐ์ <SearchItem />์์
๊ฐ๊ฐ์ item ์ ์ด๋ฆ์ ํธ๋ฒํ๋ฉด, ํด๋นํ๋ ์ํ์ด๋ฏธ์ง์ ๋ฒํผ์ด ์๋ <HoverItemView /> ์ปดํฌ๋ํธ๊ฐ ๋ํ๋๊ฒ ํด์ฃผ์๋ค.
function HoverItemView({ item, showProduct }) {
const { name, url } = item;
return (
<div className="hoverItemView">
<img />
<button />
</div>
);
}
<SearchList />์์ <SearchItem />,
<SearchItem /> ์์ <HoverItemView />์ปดํฌ๋ํธ๊ฐ ์๋ค.
์ฌ๊ธฐ์ ๋จผ์
onMouseRemove ์ด๋ฒคํธ๋ฅผ ์จ์ ๋์ ๋์ง ์๊ณ ์ํ์ด๋ฏธ์ง์ ๋ฒํผ์ด ํ๋์ฉ๋ง ์ถ๋ ฅ๋๋๋ก ํ ์ ์์๋ค.
<div className="searchItem" onMouseEnter={()=>{setIsHover(true)}} onMouseLeave={() => {setIsHover(true)}}>//onMouseLeave์ด๋ฒคํธ ์ถ๊ฐ
๊ทผ๋ฐ ๊ทธ๋ ๊ฒ ํ๋๊น ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋คใ
์ํ ์ด๋ฏธ์ง์ ๋ฒํผ์ชฝ์ผ๋ก ๋ง์ฐ์ค๋ฅผ ์ฎ๊ฒจ๊ฐ๋ฉด ์ฌ๋ผ์ง๋ค๋ ๊ฑฐ์๋ค.
HoverItemView ์ปดํฌ๋ํธ์ ์์ญ์ ๊ฒ์๊ฒฐ๊ณผ ์ํ์ด๋ฆ์ด ๋จ๋ ๊ณณ๊น์ง ์ฐจ์งํ๊ฒ ํด๋ณด๊ณ ์ด์ํ๊ฒ ๋ค์์ผ๋ฒ๋ฆฐ ์ฝ๋์ ํ๋ฉด์ ๋ง์ฃผํ๋ค๊ฐ
onMouseEnter์ด๋ฒคํธ๋ฅผ ํธ๋ฒํ ์ํ์ด๋ฏธ์ง์ ๋ฒํผ์ด ์๋ ๊ณณ์๋ ๊ฑธ์ด์ฃผ์ด ํด๋น ์ด๋ฏธ์ง์ ๊ฐ๋ ํธ๋ฒํ ์ํ๊ฐ ๋๊ฒ๋ ํด์ค ์ ์์๋ค.
<div onMouseEnter={()=>{setIsHover(true)}} onClick={moveItemPage}>
<img />
<button />
</div>
โท ์ฃผ๋ฌธ๋ด์ญ์

์ฃผ๋ฌธ ๋ด์ญ์์์๋ ์ฃผ๋ฌธํ ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๊ฑฐ์๋ค.
์ฌ๊ธฐ์ JSONํ์ผ๋ก ๋๋ฉด์ ์คํธ๋ง์ผ๋ก ๋์ด ๋ค์ด์จ ๋ฐฐ์ด/๊ฐ์ฒด๋ฅผ ์๋์ ๋ฐฐ์ด/๊ฐ์ฒด๋ก ํ๋ณํ ํด์ค์ผ ํ๋ ๋ฌธ์ ํ๋,
(๋ฉํ์ ๋ฌธ์ ์๋ ๊ฑฐ ๊ฐ์๋ฐ, ๋์ค์ ๋ฐฑ์๋ ๋ถ๋ค์ด ๊ณ ์ณ์ ์คํธ๋ง์๋ ๋ฐฐ์ด ํํ๋ก ๋ค์ด์ด )
๋ฐฐ์ด ์์ ๋ค์ด์๋ ๊ฐ ์ฃผ๋ฌธ ์ํ ๋ชฉ๋ก์ ๊ฐ๊ฒฉ๊ณผ ์๋์ ๊ณ์ฐํด์ ํฉ๊ณ๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๋ฐฑ์๋์์ ๋ค์ด์ฌ ๋ฐ์ดํฐ์ ํํ์ด๋ค.
"orderInfo": {
"orderItems": "[{\"size\": null, \"price\": null, \"quantity\": null, \"productName\": null}]",
}
์์ดํ
์ ๊ฐ๊ฒฉ๊ณผ ์๋์ orderInfo ๊ฐ์ฒด ์์ oderItems ๋ฐฐ์ด ์์ ๊ฐ๊ฐ์ ์ํ์ ๋ํ๋ด๋ ๊ฐ์ฒด์ price์ quantity ๋ก ๋์ด ์๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์ useEffect๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ์นํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๊ณ์ํด์ ๋น ๊ฐ์ฒด๋ก ๋จ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๋๋ ์ด๋ด ๋๋ง๋ค ๊ฐ์ด ์ ๋์ค๋๊น ๋งตํ์ ๋๋ ธ๋ ๊ฑฐ ๊ฐ๋คโฆ ๊ทธ๋ฌ๋ฉด ์ผ๋จ ๋จ๊ธฐ๋ผ๋ ํ๋๋ฐ ์ด๊ฑด ์์๋ฐฉํธ์ผ๋ฟ์ด๋ผ๊ณ ํจโฆ๐ซ
๊ทธ๋ฌ๋ค๊ฐ ํ์์๊ฒ ์ป์ ๊ฟํ์ด ์๋๋ฐ optional chaining
'?' ์์ ์๋ ์์๊ฐ undefined/ null ์ด๋ฉด ์ผ๋จ ์ค๋ฅ๊ฐ ์๋ undefined๋ฅผ ๋ฐํํด์ค๋ค.
๋ ๋๋ง์ด ๋๋๊ณ ๋ ํ orderInfo ๋ฐ์ดํฐ๊ฐ ์์ ๋๋ '?' ๋ค์ ์๋ ๋์์ ์คํํ๋ค.
&&์ฐ์ฐ์์ ๋น์ทํ๋ฐ ๋ ์ฝ๊ฒ ์ธ ์ ์๊ฒ ํด์ฃผ๋ ๊ฑฐ ๊ฐ๋ค.
orderinfo?.orderItems
์ ๋ ๊ฒ ๊ฐ์ ธ์จ orderItems ๊ฐ ์คํธ๋ง์ผ๋ก ๋ฌถ์ฌ ์์ด ๊ฐ์ฒดํํ๋ก ๋ค์ ํ๋ณํํ๋ ์์
์ด ํ์ํ๋ค.
orderItems๋ฅผ orderItemString ์ด๋ผ๋ ๋ณ์์ ์ ์ฅํ๊ณ JSON.parse() ๋ฅผ ์จ์ ํ๋ณํ์ ์์ผฐ๋ค.
๊ทธ๋ฆฌ๊ณ orderItemsArray๋ผ๋ ๋น ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ํ๋ณํ์ํจ orderItems ๋ฐฐ์ด์ ๋์ด์ํจ๋ค.
let orderItemsArray = [];
const orderItemsString = orderInfo?.orderItems;
if (orderItemsString) {
[...orderItemsArray] = JSON.parse(orderItemsString);
}
์ฌ๊ธฐ์ ์ด์ ๊ณ์ฐ์ ํด์ผ ํ๋ค.
์ํ ๋ชฉ๋ก์ ๋ฐ๋ผ ๊ฐ๊ฒฉ๊ณผ ๊ตฌ๋งคํ๋ ์๋์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ฒด์์ ๊ฐ๊ฐ์ price์ quantity๋ฅผ ๊ณฑํ๊ณ ,
๊ณฑํ ๊ฐ์ ๋ชจ์ ๋ํด์ฃผ์ด์ผ ํ๋ค.
์ฒ์์ ์ด ํฉ๊ณ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก map ์ ์๊ฐํ๋๋ฐ total์ ๊ตฌํ๋๋ฐ ์ต์ ํ๋์ด ์๋ ํจ์๊ฐ ์์๋ค.
.reduce() ์ธ๋ฐ, ๋ฐฐ์ด์ ๊ฐ ์์์์ ๊ณ์ฐํ์ฌ ๋์ ๋ ๊ฐ ํ๋๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
๋ฐฐ์ด.reduce(๋์ ๊ฐ, ํ์ฌ๊ฐ) => {return ๊ฒฐ๊ณผ}, ์ด๊ธฐ๊ฐ);
์ด๊ฑธ ๋ด๊ฐ ์์
ํ๊ณ ์๋ ์ดํฉ์ ๊ตฌํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์จ์ผ ํ๋ค.
let totalAmount = [];
totalAmount = orderItemsArray.reduce(
(accumulator, currentValue) =>
accumulator + currentValue.price * currentValue.quantity,
0
);
์ด๊ธฐ๊ฐ์ ๋จผ์ 0์์ผ๋ก ์ค์ ํ๊ณ , accumulator๋ผ๋ ๋์ ๊ฐ์ ํ์ฌ ๊ณ์ฐํ ๊ฐ์ ๋ํ๋ค.
์ฌ๊ธฐ์ ๋์ถ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐฐ์ด์ totalAmount ๋ผ๋ ๋ณ์์ ์ ์ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ totalAmount๊ฐ '000.00'์ ์์์ ํํ๋ก ๋์๊ธฐ ๋๋ฌธ์
์ ์๋ก ๋ฐ๊พธ๊ณ ์์ 'โฉ'์ ๋ถ์ด๊ณ toLocaleString() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ง์ ๊ธ์ก ํํ์ ๋ฌธ์์ด๋ก ๋ฐํํด์ค๋ค.
๊ทธ๋ผ ์ฑ๊ณต
{`โฉ ${Math.floor(totalAmount).toLocaleString()}`}
์ผ๋จ ๋ด๊ฐ ํ๋ ๊ธฐ๋ฅ๋ค์ ๋ํด์ ์ต์ํด์ก๋๋ฐ ์จ๋ณด์ง ๋ชปํ ๊ธฐ๋ฅ๋ค์ด ์์ด์
๋ค์ ํ๋ก์ ํธ๋ฅผ ์ํด์๋ ๋ด๊ฐ ํด๋ณด์ง ์์๋ ํ์ด์ง์ ๋ํด์๋ ์ฐ์ตํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์๋์ ํ๋ก์ ํธ ํ๋ฉด์ ๋๋ ์ ์ ์ข์๋ ์ , ์์ฌ์ด ์ , ๋ค์์ ์๋ํด๋ณด๊ณ ์ถ์ ๋ถ๋ถ 3๊ฐ์ง๋ก ๋๋์ด๋ณด์๋ค.
์ข์๋ ์
- ์์นจ๋ง๋ค stand-up meeting์ผ๋ก 30๋ถ ์ ๋ ์งง๊ฒ ์ด์ ํ ์ผ, ์ค๋ ํ ์ผ์ ํ์ํ ๊ฒ
- 1์ฃผ์ฐจ sprint ํ๊ณ ํ๋ฉฐ ํ๋ก์ ํธ๊ฐ ์ด๋ ์ ๋ ์งํ๋๋์ง ๋ค์ ํ ๋ฒ ๋ฆฌ๋ง์ธ๋ํจ. (trello๊ฐ ๋์์ด ๋ง์ด ๋์๋ค.)
- ๋ฐฑ์๋์ ํต์ ํ๋ฉด์ ๋ฐฑ์๋์์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ๋ง๋ ํ๋ฉด์ ๋ค์ด์์ง๋ ๊ฒ์ ๋์ผ๋ก ํ์ธํ ์ ์์.
- ๋์ ๋ผ์ฐํ ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ํ๋ค์ ํ๋ฉด์ ๊ตฌํํ ์ ์์๋ ์ .
- ๋ก๊ณ ์ ์ํ์ ์ ์ํ๋ฉด์ ์ฐ๋ฆฌ๋ง์ ์ํ๊ณผ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์์๋ ์ .
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ต๋ํ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ ๊ฒ ๋ง๋ค์ด๋ผ ์ ์๊ตฌ๋๋ฅผ ๊นจ๋ฌ์ ์ ์์๋ ์ .
- ํต์ ์ด ํ์ํ ํ์ด์ง๋ ํ๋ฉด ๊ตฌํ์ด ๋ ๋๋ง๋ค ํต์ ์ ๊ณ์ ์๋ํ๋ ์
์์ฌ์ด ์
- ๋ฐฑ์๋ ํ์๊ณผ ์ํต์ ๋ถ์ฌ
๊ฒ์ํ์ด์ง์์ ๋ฐฑ์๋๊ฐ ์์
ํ ๊ฒ์ API๊ฐ ์๋์ง ๋ชจ๋ฅด๊ณ , ์ ์ฒด ์ํ API๋ฅผ ํจ์นํ๊ณ ์์๋ค.
๋ฐฑ์๋๊ฐ ์ค๋นํด๋๋ ๋ฐ์ดํฐ์ ๋ํด ์ ํ์
ํ์
- ์ฒ์์๋ ๋นจ๋ฆฌ ํด์ผํ๋ค๋ ๊ธํ ๋ง์์ ์ญํ ๋ถ๋ด์ด ์ ๋๋ก ์ ๋์ด์ ์งํ๋์๋ ์ .
์ญํ ๋ถ๋ด์ด ์ ์ ๋์ด ์์ด์ ๋ค๋ฅธ ํ์๋ถ์๊ฒ ์์
ํ ๋ถ๋ถ๋ค์ด ๋ชฐ๋ ค ์์๋ค.
์ฒ์๋ถํฐ ๊ฐ์ ๋งก์์ ํ ํ์ด์ง๋ฅผ ์ ํด์ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
- ๊ตฌํ ๊ณผ์ ์ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์ฐ์ด๋์ง ๋ชปํ ์
๋ธ๋ก๊ทธ์ ๋ด๊ฐ ๋ง์ฃผํ๋ ์ํฉ์ ์ฐ๋ ค๊ณ ํ๋๊น ์๋ฌ์ ํด๊ฒฐ์ ๋ํด ๋ง๋ก๋ง ์ค๋ช
ํ๊ธฐ๋ณด๋ค ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ๋ณด์ฌ์ค ์ ์๋ ์ค๊ฑฐ๋ฌผ์ด ์์ด์ผ๊ฒ ๋ค.
์๋ํด๋ณด๊ณ ์ถ์ ์
- ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ด๋ ํํฐ ๊ธฐ๋ฅ์ ์๋ํด๋ณด์ง ๋ชปํด์ ๋ค์ ํ๋ก์ ํธ์์๋ ์ด๋ ต๋๋ผ๋ ๋์ ํด๋ณด๊ณ ์ถ๋ค.
- ๋์ ๋ผ์ฐํ ๊ณผ fetch ์ ๋ํ ์ดํด๊ฐ ์์ง ๋ถ์กฑํ์ฌ ๊ณต๋ถ๋ฅผ ๋ ํด๋ด์ผ๊ฒ ๋ค.
๋ง๋ฌด๋ฆฌ
๊ฐ์ด ํํ๋ก์ ํธํ๋ฉด์ ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ํต์ ์ด ๋ค๋ฅธ ๋ฌด์๋ณด๋ค ์ค์ํ๋ค๋ ๊ฒ์ ๋๊ผ๋ค.
์ฐ๋ฆฌ ํ์ด ์ํ๋ ๊ฑด API๊ฐ ์๋ ํ๋ฉด์ด ๋ค ๋ง๋ค์ด์ง๊ณ ๋๋ฉด ํต์ ์ ์๋ก ๊ทธ ๋ ๊ทธ ๋ ํด๋ณด์๋ค๋ ๊ฑฐ๋ค. ๊ทธ๋์ ๋์ค์ ํ๋ฉด์ ๋ค ํ๋๋ก ๋ชจ์ ์ฒ์๋ถํฐ ๋๊น์ง ์ ํต์ ๋๋์ง ํ์ธํด๋ดค์ ๋ ๋์ฒด๋ก ์์กฐ๋ก์ ๋ค.
๊ฐ์ด ์์
ํ๋ฉด์ ๋ ํ์ํ ๊ฒ ์๋์ง ์์๋ก ๋ฌผ์ด๋ด์ฃผ์๋ ๋คํฌ ํ๋งค๋,
์ค๊ฐ์ค๊ฐ ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ ์ ์ ์๊ธฐํด์ฃผ๊ณ ์ธ์ธํ๊ฒ PTํ๋ ๊ดํ ํ๋งค๋,
ํ๋ฉด ๊ตฌํ์ด๋ ํต์ ์ ์์ด์ ํค๋งค๊ณ ์์ ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ฅฌ๋ ํ๋ก ํธ์๋ ๋ฆฌ๋์ธ ์์ด๋์ด
์บ๋ฆฌ ํด์ค์ ํ๋ก์ ํธ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด ๋ผ ์ ์์๋ค.
๋ค์ ํ๋ก์ ํธ๋ ํ์ดํ
~
'๐Project ํ๊ณ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Project | ์๋ฃ์ธ ์ธ์ฆ ๋ฏธ๋์ฑ(23.07.31~08.24) (1) | 2024.03.14 |
---|---|
Project#2 | muse ํ๊ณ | ๋ฎค์ง์ปฌ ์๋งค ํ๋ซํผ (1) | 2023.05.07 |