๋ฆฌํฌ์งํ ๋ฆฌ๋ ์์ ์ ์ปดํจํฐ์ ์์
๊ณต๊ฐ(local)์ ์์นํ ๋ก์ปฌ Git ๋ฆฌํฌ์งํ ๋ฆฌ์,
Github ๋ฑ์ ์๊ฒฉ(remote) ๊ณต๊ฐ์ ์์นํ ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
์ฝ๋๋ฅผ ์ ์ฅํ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋๋ ํ ๋ฆฌ์ ๋ก์ปฌ Git repository๋ฅผ ์์ฑํ๋ค. (git init)
์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ ์ฅํ๋ ๊ณต๊ฐ, ์์
๊ณต๊ฐ(work space)์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ
git์ ๊ด๋ฆฌํ์ ์๋ ์ํ๋ก ์ฌ๋ ค์ค ์ ์๋ค. ์ด ์์ญ์ด staging area์ด๋ค. (git add)
staging area์ ํ์ผ์ commit์ด ๊ฐ๋ฅํ๋ค.
commit์ผ๋ก local Git repository์ ๋ด ์ฝ๋๋ฅผ ๊ธฐ๋กํ ์ ์๋ค. (git commit)
์๊ฒฉ Git ๋ฆฌํฌ์งํ ๋ฆฌ(์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ)๋ ์์ ์ ์ปดํจํฐ(๋ก์ปฌ ํ๊ฒฝ) ์์ ๊ณต๊ฐ์ ์์นํ์ง ์๋ Git ๋ฆฌํฌ์งํ ๋ฆฌ์ด๋ค.
๊ฐ๋ฐ์ ๋ํด์ ๊ฒ์ํด ๋ณด๋ฉด ์ฝ๊ฒ ์ ํ ์ ์๋ Github์ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ํ์ ์ธ ์์์ด๋ค.
๊ณต๊ฐ๋ Git ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฒฝ์ฐ, ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ๊ณต์ ํ ์ ์๋ ํน์ง์ด ์๋ค.
Github์์ ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ git url์ ๋ฑ๋กํ๋ค. (git remote add)
๋ก์ปฌ Git repository์ ๊ธฐ๋กํ ๋ด์ญ์ ์๊ฒฉ Git repository์ push ํ๋ค. (git push)
ํฌํฌ๋ ๊ธฐ์กด์ ํ๋ก์ ํธ์ ๋ณํ๋ฅผ ์ฃผ๊ฑฐ๋ ์๋ก์ด ๊ฒ์ ์๋๋ฅผ ํด๋ณด๊ธฐ ์ํด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ธฐ์กด์ ํ๋ก์ ํธ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ ์๋ก์ ํ๋ก์ ํธ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
๋ํ ๋ผ์ด์ ์ค๊น์ง ํจ๊ป ๋ณต์ฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์, ๊ณต๊ฐ๋์ด ์๊ณ ๋ผ์ด์ ์ค ๋ช
์๊ฐ ์ ๋๋ก ๋์ด์๋ ํ๋ก์ ํธ๋ ๋ผ์ด์ ์ค๋ง ์ ์งํค๋ฉด ํฌํฌํด๋ ๋ฌธ์ ๊ฐ ์๋ค.
๋ณดํต Github ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ ์ Github ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ํฌํฌํ๋ค.
์์ ์ ์ปดํจํฐ์ ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก git clone ํ์ฌ ๋ฐ๋ก ๊ฐ๋ฐํ๊ธฐ
public ํ๋ก์ ํธ์ ๋ฒ๊ทธ ์์ ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐ ์์ฒญ (push & pull request)
- public ํ๋ก์ ํธ์์ ์๋ก ์
๋ฐ์ดํธ ๋ ๋ด์ฉ์ pull
๋๋ง์ ์๊ณ ๋ผ์คํ ์ด์ธ ๋ง๋ค๊ธฐ
๋์ค์ปค์ ๋์ด ๊ธฐ๋ฅ
> script.js๋ฅผ ์์ ํ์ฌ agoraStatesDiscussions ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋์ดํ ์ ์๊ฒ ๊ตฌํํฉ๋๋ค.
CSS
> ์๊ณ ๋ผ์คํ
์ด์ธ ์ง๋ฌธ ๋ฆฌ์คํธ๊ฐ ์ค์์ผ๋ก ์์ผ ํฉ๋๋ค.
> style.css๋ฅผ ์์ ํ์ฌ ๋ฉ์ง๊ณ ์๋ฆ๋ต๊ฒ ๋๋ง์ ์๊ณ ๋ผ์คํ
์ด์ธ ๋ฅผ ๊พธ๋ฐ๋๋ค.
> colorhunt, dribbble์์ ์ ์ ํ ์ ์กฐํฉ, ๋์์ธ์ ์ฐธ๊ณ ํฉ๋๋ค.
๋์ค์ปค์ ์ถ๊ฐ ๊ธฐ๋ฅ
> script.js๋ฅผ ์์ ํ์ฌ ๋์ค์ปค์
์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
> section.form__container ์์์ ์๋ก์ด ์๊ณ ๋ผ์คํ
์ด์ธ ์ง๋ฌธ์ ์ถ๊ฐํ ์ ์๋ ์
๋ ฅ ํผ์ ์ ์ํฉ๋๋ค. ํ์์ ์์ ์
๋๋ค.
> ์์ด๋, ๋ณธ๋ฌธ์ ์
๋ ฅํ๊ณ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค์ ํ๋ฉด์ ๋์ค์ปค์
์ด ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.
> agoraS tatesDiscussions ๋ฐฐ์ด์ ์ถ๊ฐํ ๋ฐ์ดํฐ๊ฐ ์ค์ ์์ฌ์ผ ํฉ๋๋ค.
Github Page ๋ฐฐํฌ
> Github Page ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๋๊ตฌ๋ ๋ณผ ์ ์๊ฒ ๋ฐฐํฌํฉ๋๋ค.
์ฝ๋์คํ ์ด์ธ fe-sprint-my-agora-states ๋ฆฌํฌ์งํ ๋ฆฌ๋ก Pull Request
> ๋๋ง์ ์๊ณ ๋ผ์คํ
์ด์ธ ๋ฅผ ์ฝ๋์คํ
์ด์ธ ๊นํ๋ธ์ Pull requestํฉ๋๋ค.
> ์ฃผ์ด์ง Pull request ํ์์ ๋ฐ๋ผ์ฃผ์ธ์.
ํ์ง ์๊ฐ ์ ์ฉ
> ์ํ ์๊ฐ์ ์ ๋ณํํ์ฌ, ํ์ง ์๊ฐ์ ๋ง๊ฒ ํํํฉ๋๋ค. (ex. ์ค์ 10:02:17)
ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฅ
> ํ์ด์ง๋ค์ด์
์ ๋ํด์ ์ค์ค๋ก ํ์ตํฉ๋๋ค.
> ํ ํ์ด์ง์ 10๊ฐ์ฉ ๋์ค์ปค์
์ด ๋ณด์ฌ์ผ ํฉ๋๋ค.
> ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ ์ ์์ด์ผ ํฉ๋๋ค.
> ์ด์ ํ์ด์ง๋ก ๋์์ฌ ์ ์์ด์ผ ํฉ๋๋ค.
> ๋ค์ ํ์ด์ง๊ฐ ์๊ฑฐ๋, ์ด์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ ํ์ด์ง๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
๋์ค์ปค์ ์ ์ง ๊ธฐ๋ฅ
> LocalStorage์ ๋ํด์ ์ค์ค๋ก ํ์ตํ๊ณ , ์๋กญ๊ฒ ์ถ๊ฐํ๋ Discussion์ด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํด๋ ์ ์ง๋๋๋ก ์ ์ํฉ๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>My Agora States</title>
<link rel="stylesheet" href="style.css" />
<script
src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.8/purify.js"
integrity="sha512-QaF+0tDlqVmwZaQSc0kImgYmw+Cd66TxA5D9X70I5V9BNSqk6yBTbyqw2VEUsVYV5OTbxw8HD9d45on1wvYv7g=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
</head>
<body>
<main>
<h1>My Agora States</h1>
<section class="form__container">
<form action="" method="get" class="form">
<div class="form__input--wrapper">
<div class="form__input--name">
<label for="name">Enter your name: </label>
<input type="text" name="name" id="name" required />
</div>
<div class="form__input--title">
<label for="title">Enter your title: </label>
<input type="text" name="title" id="title" required />
</div>
<div class="form__textbox">
<label for="story">Your question: </label>
<textarea
id="story"
name="story"
placeholder="์ง๋ฌธ์ ์์ฑํ์ธ์"
required
></textarea>
</div>
</div>
<div class="form__submit">
<input type="submit" value="submit" />
</div>
</form>
</section>
<section class="discussion__wrapper">
<ul class="discussions__container">
<li class="discussion__container">
<div class="discussion__avatar--wrapper">
<img
class="discussion__avatar--image"
src="https://avatars.githubusercontent.com/u/12145019?s=64&u=5c97f25ee02d87898457e23c0e61b884241838e3&v=4"
alt="avatar of kimploo"
/>
</div>
<div class="discussion__content">
<h2 class="discussion__title">
<a
href="https://github.com/codestates-seb/agora-states-fe/discussions/6"
>[notice] ์ข์ ์ง๋ฌธํ๋ ๋ฒ</a
>
</h2>
<div class="discussion__information">
kimploo / 2022-04-22T14:08:33Z
</div>
</div>
<div class="discussion__answered"><p>โ</p></div>
</li>
</ul>
</section>
</main>
</body>
<script src="data.js"></script>
<script src="script.js"></script>
</html>
// index.html์ ์ด์ด์ agoraStatesDiscussions ๋ฐฐ์ด ์์๋ฅผ ํ์ธํ์ธ์.
console.log(agoraStatesDiscussions);
// convertToDiscussion์ ์๊ณ ๋ผ ์คํ
์ด์ธ ๋ฐ์ดํฐ๋ฅผ DOM์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค.
const convertToDiscussion = (obj) => {
const li = document.createElement("li"); // li ์์ ์์ฑ
li.className = "discussion__container"; // ํด๋์ค ์ด๋ฆ ์ง์
const avatarWrapper = document.createElement("div");
avatarWrapper.className = "discussion__avatar--wrapper";
const discussionContent = document.createElement("div");
discussionContent.className = "discussion__content";
const discussionAnswered = document.createElement("div");
discussionAnswered.className = "discussion__answered";
// TODO: ๊ฐ์ฒด ํ๋์ ๋ด๊ธด ์ ๋ณด๋ฅผ DOM์ ์ ์ ํ ๋ฃ์ด์ฃผ์ธ์.
li.append(avatarWrapper, discussionContent, discussionAnswered);
return li;
};
// agoraStatesDiscussions ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ ๋๋งํ๋ ํจ์์
๋๋ค.
const render = (element) => {
for (let i = 0; i < agoraStatesDiscussions.length; i += 1) {
element.append(convertToDiscussion(agoraStatesDiscussions[i]));
}
return;
};
// ul ์์์ agoraStatesDiscussions ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ ๋๋งํฉ๋๋ค.
const ul = document.querySelector("ul.discussions__container");
render(ul);