From 9ad3fea5c0012e59fb61f86733c2c62de894b21c Mon Sep 17 00:00:00 2001 From: leegwae <57662010+leegwae@users.noreply.github.com> Date: Mon, 20 Sep 2021 20:05:29 +0900 Subject: [Ko] Translate Beginning our React todo list (#2425) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Rename HTML to MD * React todo list 시작하기 번역 완료 * Fix url flaws * Change words with comments --- .../react_todo_list_beginning/index.md | 635 +++++++++++++++++++++ .../react_todo_list_beginning/unstyled-app.png | Bin 0 -> 24907 bytes 2 files changed, 635 insertions(+) create mode 100644 files/ko/learn/tools_and_testing/client-side_javascript_frameworks/react_todo_list_beginning/index.md create mode 100644 files/ko/learn/tools_and_testing/client-side_javascript_frameworks/react_todo_list_beginning/unstyled-app.png (limited to 'files') diff --git a/files/ko/learn/tools_and_testing/client-side_javascript_frameworks/react_todo_list_beginning/index.md b/files/ko/learn/tools_and_testing/client-side_javascript_frameworks/react_todo_list_beginning/index.md new file mode 100644 index 0000000000..eb0ea7fd63 --- /dev/null +++ b/files/ko/learn/tools_and_testing/client-side_javascript_frameworks/react_todo_list_beginning/index.md @@ -0,0 +1,635 @@ +--- +title: React todo list 시작하기 +slug: >- + Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_todo_list_beginning +tags: + - App + - Beginner + - Frameworks + - JavaScript + - Learn + - React + - Style + - client-side +--- +{{LearnSidebar}} + +{{PreviousMenuNext("Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started","Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_components", "Learn/Tools_and_testing/Client-side_JavaScript_frameworks")}} + +여러분이 React로 개념 증명을 만드는, 곧 사용자가 원하는 작업을 추가, 편집, 그리고 삭제할 수 있으며, 작업을 삭제하지 않고 완료로 표시할 수도 있는 앱을 만드는 작업을 맡게 되었다고 가정해 보겠습니다. 이 기사는 기본 `App` 컴포넌트 구조와 스타일링을 설정하는 방법에 대해서 다루며, 여러분은 개별 컴포넌트 정의와 상호작용성을 배울 준비를 갖추게 될 겁니다. + +
+

참고: 여러분의 코드를 우리의 것과 비교하고 싶다면 todo-react repository에서 최종적인 버전의 샘플 React 앱 코드를 확인해보세요. 실행 중인 라이브 버전은 https://mdn.github.io/todo-react-build/에서 볼 수 있습니다.

+ + + + + + + + + + + +
필요한 사전 지식: + 코어 HTML, CSS, 및 JavaScript 언어에 익숙할 것. 터미널/커맨드라인에 대한 지식. +
목표:투두 리스트를 만들고 기본 App 구조와 스타일링을 설정한다.
+ + + + +## 우리가 만들 애플리케이션의 유저 스토리 + +소프트웨어 개발에서 유저 스토리(user story)는 사용자의 관점에서 실행 가능한 목표를 뜻합니다. 개발을 시작하기 전에 유저 스토리를 정의하는 것은 매우 도움이 됩니다. 우리의 애플리케이션은 다음과 같은 스토리를 만족해야 합니다: + +나는 사용자로서, 다음의 것들을 할 수 있다: + +- 작업 목록 읽기 +- 마우스나 키보드로 작업 추가하기 +- 마우스나 키보드를 사용하여 작업을 완료로 표시하기 +- 마우스나 키보드를 사용하여 작업 삭제하기 +- 마우스나 키보드를 사용하여 작업 편집하기 +- 작업을 특정한 집합으로 나누어 보기: 전체 작업, 진행 중인 작업, 혹은 완료된 작업들. + +이 스토리들을 하나하나 다뤄보겠습니다. + + + +## 프로젝트를 실행하기 전 점검하기 + +create-react-app은 우리의 프로젝트에서 전혀 사용하지 않을 파일을 몇 개 만듭니다. + +- 컴포넌트마다 스타일 시트를 만들지 않을 것이므로, 우선 `App.js`의 상단에 `App.css`를 임포트하고 있는 문을 지웁니다. +- `logo.svg` 파일 역시 사용하지 않을 것이므로, 이것을 임포트하고 있는 문 역시 삭제합니다. + +그러고 나서 필요하지 않은 파일들을 삭제하기 위해 터미널에 아래의 커맨드들을 복사, 붙여넣기 합니다. 애플리케이션의 루트 디렉토리에서 터미널을 실행하고 있는지 확인하세요! + +```shell +# 프로젝트의 src 디렉토리로 이동 +cd src +# 파일들을 삭제 +rm -- App.test.js App.css logo.svg serviceWorker.js setupTests.js +# 프로젝트의 루트 디렉토리로 다시 돌아오기 +cd .. +``` + +참고: + +- 삭제하려는 파일 중 두 개는 애플리케이션을 테스트하기 위해 사용됩니다. 이 기사에서는 테스팅에 대해 다루지 않습니다. +- 위의 터미널 작업을 수행하기 위해 서버를 멈추었다면, `npm start`를 사용하여 다시 시작해야 합니다. + + + +## 프로젝트 시작 코드 + +프로젝트를 시작하기 위해 여러분이 지금 가지고 있는 것을 대신할 `App()` 함수와 애플리케이션을 꾸밀 CSS를 제공하겠습니다. + + + +### JSX + +아래의 스니펫을 복사하고 기존의 `App()` 함수 대신 `App.js`에 붙여넣으세요. + +```js +function App(props) { + return ( +
+

TodoMatic

+
+

+ +

+ + +
+
+ + + +
+

+ 3 tasks remaining +

+ +
+ ); +} +``` + +이제 `public/index.html`을 열고 [``](/en-US/docs/Web/HTML/Element/title) 요소의 텍스트를 `TodoMatic`으로 바꾸세요. 이렇게 하면 우리의 애플리케이션 상단의 [`<h1>`](/en-US/docs/Web/HTML/Element/Heading_Elements)과 일치할 겁니다. + +```js +<title>TodoMatic +``` + +브라우저를 새로고침하면, 아래 이미지처럼 보일 거예요. + +![todo-matic app, unstyled, showing a jumbled mess of labels, inputs, and buttons](./unstyled-app.png) + +예쁘지 않고 아무런 기능도 갖추지 않았지만, 괜찮습니다! 곧 꾸밀 거니까요. 우선, JSX가 유저 스토리에 어떻게 대응하는지 살펴봅시다: + +- 새로운 작업을 쓰기 위한 [``](/en-US/docs/Web/HTML/Element/input/text)와 폼(form)을 제출하기 위한 버튼을 가진 [`
`](/en-US/docs/Web/HTML/Element/form) 요소가 있습니다. +- 작업을 필터링하기 위한 여러 개의 버튼이 있습니다. +- 작업이 몇 개 남아있는지 알려주는 헤딩(heading)이 있습니다. +- 순서가 매겨지지 않은 세 개의 작업이 있습니다. 각각의 작업은 리스트 아이템([`
  • `](/en-US/docs/Web/HTML/Element/li))이며, 편집하거나 삭제하기 위한 버튼과 완료를 표시할 체크 박스를 가지고 있습니다. + +폼은 작업을 *만들* 수 있게 해줍니다; 버튼들은 작업들을 *필터링할* 수 있게 해줍니다; 헤딩과 리스트는 작업들을 *읽을* 수 있게 해줍니다. 작업을 *편집하는* UI는 현재는 없습니다. 이것도 괜찮습니다 – 나중에 만들 거니까요. + + + +### 접근성 기능 + +익숙하지 않은 속성을 발견했을 겁니다. 예를 들어: + +```js + +``` + +`aria-pressed`은 보조 기술(예: 스크린 리더)에게 하나의 버튼이 두 개의 상태 `pressed`와 `unpressed`로 있을 수 있다는 것을 알려줍니다. `on`과 `off`라고 생각해보세요. 값을 `true`로 설정하는 것은 버튼을 기본적으로 눌린 상태라는 것을 의미합니다. + +클래스 `visually-hidden`는 아직 CSS를 연결하지 않았으므로 아직 아무런 이펙트도 없습니다. 제대로 스타일을 설정하면 이 클래스를 가진 모든 요소가 시력이 정상인 사용자에게는 숨겨지며 스크린 리더 사용자에게만 보입니다 — 이 단어들은 시력이 정상인 사용자들에게 필요하지 않기 때문입니다; 단어들은 추가적인 시각적 맥락(visual context)을 가지고 있지 않은 스크린 리더 사용자들에게 버튼이 무엇을 하는지 더 많은 정보를 제공합니다. + +아래에서 [`