1. 광고배너
/ 이전버튼 다음버튼
2
미리보기

현장에서 바로 써먹는 리액트 with 타입스크립트 - 리액트와 스토리북으로 배우는 컴포넌트 주도 개발
저자 : 김정헌 ㅣ 출판사 : 심통

2023.06.27 ㅣ 576p ㅣ ISBN-13 : 9791197973079

정가37,000
판매가33,300(10% 할인)
적립금 1,850원 (5%)
배송일정 오늘 수령 가능
주문 수량 변경시 안내  당일배송 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 B5(257mm X 188mm, 사륙배판)
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 인터넷 > 웹프로그래밍(웹디자...
리액트와 스토리북으로 배우는 컴포넌트 주도 개발!
이 책은 웹 개발을 하는 개발자, 리액트로 싱글 페이지 애플리케이션을 개발하고 있는 개발자 그리고 컴포넌트 주도 개발(Component Driven Development, CDD)을 하고자 하는 개발자를 대상으로 하고 있다. 리액트와 스토리북을 사용하여 컴포넌트 주도 개발을 이해할 수 있도록, 리액트의 기초부터 스토리북의 설정, 스토리북을 통해 컴포넌트 주도 개발을 다루는 방법을 예제를 통해 설명하고 있다. 이 책을 통해, 컴포넌트 주도 개발을 하지 않고 있는 실제 프로젝트에 스토리북을 적용하여 컴포넌트 주도 개발을 활용할 수 있도록 안내하고 있다.
펼쳐보기

[목 차]

1장 리액트란?
1.1 웹의 역사
1) 웹 1.0 - 웹 페이지 시대
2) 웹 2.0 - 웹 애플리케이션 시대
1.2 리액트의 특징
1) JSX
2) 단방향 데이터 바인딩
3) 가상 돔
4) 선언형 프로그래밍
5) 컴포넌트 기반
1.3 요약

2장 리액트 개발 환경
2.1 윈도우 개발 환경 설정
1) 초콜리티 설치
2) 노드 설치
2.3 리액트를 시작하는 방법
1) 스크립트 태그 추가
2) Webpack이나 Babel을 설정하여 개발
3) create-react-app
4) Next.js 프레임워크
2.4 create-react-app
1) create-react-app 설치
2) create-react-app으로 프로젝트 생성 및 실행
3) create-react-app 프로젝트의 폴더 구조
2.5 요약

3장 나의 첫 리액트 프로젝트
3.1 타입스크립트
1) create-react-app과 타입스크립트
2) create-react-app의 타입스크립트 템플릿 사용하기
3.2 스타일링
1) CSS와 Link 태그
2) CSS와 import
3) CSS-in-JS (Emotion)
3.3 절대 경로로 컴포넌트 추가
3.4 Prettier
1) Prettier 설치
2) Prettier 설정
3) Prettier 실행
3.5 ESLint
1) ESLint 설치
2) ESLint 설정
3) ESLint 실행
3.6 요약

4장 카운터 앱 - Props와 State
4.1 Props와 State
4.2 프로젝트 준비
4.3 개발
1) 컴포넌트
2) 컴포넌트 <br>3) <Label /> 컴포넌트 <br>4) <Button /> 컴포넌트 <br>5) State <br>6) Props <br>4.4 요약 <br> <br>5장 클래스 컴포넌트 <br>5.1 클래스 컴포넌트 <br>5.2 프로젝트 준비 <br>5.3 개발 <br>1) <Button /> 컴포넌트 <br>2) <Label /> 컴포넌트 <br>3) <App /> 컴포넌트 <br>5.4 라이프사이클 함수 <br>1) constructor 함수 <br>2) render 함수 <br>3) getDerivedStateFromProps 함수 <br>4) componentDidMount 함수 <br>5) shouldComponentUpdate 함수 <br>6) getSnapshotBeforeUpdate 함수 <br>7) componentDidUpdate 함수 <br>8) componentWillUnmount 함수 <br>9) componentDidCatch 함수 <br>10) 호출 순서 <br>5.5 요약 <br> <br>6장 할 일 목록 앱 - Context API <br>6.1 Context API <br>6.2 프로젝트 준비 <br>6.3 State와 Props로 할 일 목록 앱 개발 <br>1) <Title /> 컴포넌트 <br>2) <Button /> 컴포넌트 <br>3) <ToDoItem /> 컴포넌트 <br>4) <ToDoList /> 컴포넌트 <br>5) useState로 할 일 목록 데이터 관리하기 <br>6) <DataView /> 컴포넌트 <br>7) <TextInput /> 컴포넌트 <br>8) 추가 버튼 컴포넌트 <br>9) <ToDoInput /> 컴포넌트 <br>10) <ShowInputButton /> 컴포넌트 <br>11) <InputContainer /> 컴포넌트 <br>6.4 Context API로 할 일 목록 앱 개발 <br>1) <ToDoList /> 생성 <br>2) <App /> 컴포넌트에 Provider 제공 <br>3) <ToDoList /> 컴포넌트: Consumer를 사용하여 Context 데이터 사용하기 <br>4) <ToDoInput /> 컴포넌트: Consumer를 사용하여 Context 데이터 사용하기 <br>6.5 요약 <br> <br>7장 react-router <br>7.1 react-router <br>7.2 프로젝트 준비 <br>7.3 개발 <br>1) react-router <br>2) <DataView /> 페이지 컴포넌트 <br>3) <ToDoInput /> 페이지 컴포넌트 <br>4) <Header /> 컴포넌트 추가 <br>7.4 요약 <br> <br>8장 Fetch API <br>8.1 Fetch API <br>8.2 프로젝트 준비 <br>8.3 개발 <br>1) <Header /> 컴포넌트 <br>2) <BlogPost /> 컴포넌트 <br>3) 블로그 글 목록 State <br>4) useEffect 훅 <br>5) Fetch API로 데이터 가져오기 <br>6) <Button /> 컴포넌트 <br>7) <Form /> 컴포넌트 <br>8) <Form /> 표시 State <br>9) 블로그 글 State 데이터 <br>10) Fetch API로 블로그 글 등록하기 <br>8.4 요약 <br> <br>9장 컴포넌트 주도 개발 <br>9.1 컴포넌트 주도 개발 <br>9.2 아토믹 디자인 <br>9.3 스토리북 <br>9.4 프로젝트 준비 <br>9.5 스토리북 설치 <br>9.6 스토리북 설정 <br>9.7 스토리북 확인 <br>1) .storybook 폴더 <br>2) .eslintrc.js 파일 <br>3) .npmrc 파일 <br>4) package.json 파일 <br>5) ./src/stories 폴더 <br>6) ./src/stories/Button.tsx 파일 <br>7) ./src/stories/Button.stories.tsx 파일 <br>8) ./src/stories/Introduction.stories.mdx 파일 <br>9.8 스토리북 실행 <br>1) 메뉴 <br>2) 컨트롤 패널 <br>3) 액션 탭 <br>4) 상단 메뉴 바 - 배경색 <br>5) 상단 메뉴 바 - 화면 크기 <br>9.9 요약 <br> <br>10장 컴포넌트 주도 개발 - 카운터 앱 <br>10.1 카운터 앱 <br>10.2 프로젝트 준비 <br>10.3 개발 <br>1) <Title /> 원자 컴포넌트 <br>2) <Button /> 원자 컴포넌트 <br>3) <Count /> 원자 컴포넌트 <br>4) <Counter /> 유기체 컴포넌트 <br>5) <CounterApp /> 템플릿 컴포넌트 <br>6) <Home /> 페이지 컴포넌트 <br>7) 카운터 앱 <br>10.4 요약 <br> <br>11장 CDD - 할 일 목록 앱 <br>11.2 프로젝트 준비 <br>11.3 개발 <br>1) <AppTitle /> 원자 컴포넌트 <br>2) <PageTitle /> 원자 컴포넌트 <br>3) <Label /> 원자 컴포넌트 <br>4) <Button /> 원자 컴포넌트 <br>5) <Input /> 원자 컴포넌트 <br>6) <Header /> 유기체 컴포넌트 <br>7) <ToDoItem /> 유기체 컴포넌트 <br>8) <InputToDo /> 유기체 컴포넌트 <br>9) <ToDoList /> 템플릿 컴포넌트 <br>10) <ToDoInput /> 템플릿 컴포넌트 <br>11) <ToDoListPage /> 페이지 컴포넌트 <br>12) ToDoList 컨텍스트 <br>13) <ToDoInputPage /> 페이지 컴포넌트 <br>14) <NotFound /> 페이지 컴포넌트 <br>15) 할 일 목록 앱 <br>11.4 요약 <br> <br>12장 CD - 블로그 앱 <br>12.1 블로그 앱 <br>12.2 프로젝트 준비 <br>12.3 개발 <br>1) <AppTitle /> 원자 컴포넌트 <br>2) <BlogTitle /> 원자 컴포넌트 <br>3) <BlogBody /> 원자 컴포넌트 <br>4) <Button /> 원자 컴포넌트 <br>5) <DialogTitle /> 원자 컴포넌트 <br>6) <Label /> 원자 컴포넌트 <br>7) <InputText /> 원자 컴포넌트 <br>8) <Input /> 분자 컴포넌트 <br>9) <Header /> 유기체 컴포넌트 <br>10) <BlogItem /> 유기체 컴포넌트 <br>11) <RegisterBlogDialog /> 유기체 컴포넌트 <br>12) <BlogList /> 템플릿 컴포넌트 <br>13) <BlogListPage /> 페이지 컴포넌트 <br>14) 블로그 앱 <br>12.4 요약 <br> <br>부록 <br>1. Lefthook <br>1) 프로젝트 준비 <br>2) Lefthook 설치 <br>3) Lefthook 설정 <br>4) Lefthook 실행 <br>5) Lefthook 적용 <br>2. 배포 <br> </div> <a href="javascript:;" class="mr-btn"> <span class="txt">펼쳐보기</span> <span class="ico"></span> </a> </div> <!-- 출판사서평 --> <a name="4"></a> <ul class="infoTab"> <li class="mL0"><a href="#1">이 책의 분류</a></li> <li><a href="#2">도서정보</a></li> <li><a href="#3">목차 및 본문</a></li> <li class="on"><a href="#4">출판사서평</a></li> <li><a href="#5">저자 및 역자 정보</a></li> <li><a href="#6">독자서평</a></li> </ul> <!-- 2019-10-23 펼쳐보기 / 접어보기 추가 강산해 --> <div class="tab-wp"> <div class="tabCon"> 리액트는 하나의 웹 애플리케이션을 컴포넌트라는 작고 고립된 코드를 나누어 개발하고, 이렇게 만든 컴포넌트들을 조합하여 개발할 수 있도록 최적화되어 있다. 그래서 많은 개발자들이 어떻게 하면 좀 더 효율적으로 컴포넌트를 나눌 수 있으며, 좀 더 쉽게 컴포넌트들을 개발할 수 있는지에 대해 고민하기 시작했으며, 그 결과 아토믹 디자인과 컴포넌트 주도 개발이라는 개발 방법론이 탄생하게 되었다. 리액트에서 어떻게 하면 좀 더 효율적으로 컴포넌트를 만들고 관리할 수 있는지에 대해 고민하고 있다면, 이 책이 큰 도움이 될 것이다. <br> <br>이 책은 리액트에 관한 책으로, 리액트에 사용되는 프로그래밍 언어인 자바스크립트에 관해서는 다루고 있지 않다. 따라서 이 책을 공부하기 위해서는 자바스크립트에 대한 이해가 필요하다. 또한 웹 페이지 제작에 필요한 지식인 HTML과 CSS에 대한 지식도 필요하다. <br> <br>이 책을 공부하기 전에 자바스크립트의 ES6 문법과 최신 자바스크립트, HTML과 CSS에 관해 먼저 공부하기를 권장한다. 특히, 리액트에서 자주 사용되는 SE6의 화살표 함수, const, let 등은 먼저 공부를 하지 않으면 책에 내용을 이해하기 어려울 수 있다. 자바스크립트, HTML과 CSS에 대해 정확히 모르고 있다면, 인터넷에서 자료를 찾아 공부한 후, 이 책을 공부하길 권장한다. <br> <br>또한, 이 책은 타입스크립트를 기본적으로 사용하고 있다. 예제 소스에서 타입스크립트를 깊게 사용하고 있지 않기 때문에, 이 책을 공부하기 전에 타입스크립트를 공부할 필요는 없다. 이 책을 통해 리액트와 함께, 타입스크립트를 함께 공부할 수 있으며, 타입스크립트에 입문하기에 적합한 내용을 다루고 있으므로 이 책을 이해하기 위해 타입스크립트를 별도로 공부할 필요는 없다. 실무에서는 좀 더 다양한 방법으로 타입스크립트를 다루고 있으므로, 이 책에 내용만으론 부족할 수 있다. 따라서 이 책으로 리액트와 스토리북을 통한 컴포넌트 주도 개발을 공부한 후, 실무에서 타입스크립트를 사용하면서 깊이 있게 공부하기를 추천한다. <br> <br>-서문 중에서 <br> </div> <a href="javascript:;" class="mr-btn"> <span class="txt">펼쳐보기</span> <span class="ico"></span> </a> </div> <!-- 저자 및 역자 정보 --> <a name="5"></a> <ul class="infoTab" > <li class="mL0"><a href="#1">이 책의 분류</a></li> <li><a href="#2">도서정보</a></li> <li><a href="#3">목차 및 본문</a></li> <li><a href="#4">출판사서평</a></li> <li class="on"><a href="#5">저자 및 역자 정보</a></li> <li><a href="#6">독자서평</a></li> </ul> <!-- 2019-10-23 펼쳐보기 / 접어보기 추가 강산해 --> <div class="tab-wp"> <div class="tabCon"> <B>김정헌</B> <br>한국의 중소기업에서 MFC를 사용한 윈도우 프로그램 개발을 시작으로 안드로이드, iOS, 웹 개발자로 활동을 하였다. 그 후, 웹 프로그래머로써 호주에서 활동하였으며, 현재는 일본에서 풀스택 엔지니어로써 리액트를 사용한 서비스를 개발중이다. 업무 이외에도 리액트와 플러터를 사용한 앱을 개발 중에 있으며, 앱 개발 중에 겪었던 일을 블로그에 게재하고 있다. <br> <br>┃블로그┃ <br>https://dev-yakuza.posstree.com/ko/ <br>┃저자 앱 리스트┃ <br>https://dev-yakuza.posstree.com/app/list/ko/ <br><br /> </div> <a href="javascript:;" class="mr-btn"> <span class="txt">펼쳐보기</span> <span class="ico"></span> </a> </div> <!-- 독자서평 --> <a name="6"></a> <ul class="infoTab"> <li class="mL0"><a href="#1">이 책의 분류</a></li> <li><a href="#2">도서정보</a></li> <li><a href="#3">목차 및 본문</a></li> <li><a href="#4">출판사서평</a></li> <li><a href="#5">저자 및 역자 정보</a></li> <li class="on"><a href="#6">독자서평</a></li> </ul> <div class="tabWrite"> <form name="form" method="post" action="/ypbooks/book/pop_review_proc.jsp"> <input type="hidden" name="membno" id="membno" value="" /> <input type="hidden" name="bookcd" id="bookcd" value="101242871" /> <input type="hidden" name="device" value="p" /> <input type="hidden" name="actionType" id="rev_ins_type" value="" /> <input type="hidden" name="review_no" id="rev_ins_no" value="" /> <input type="hidden" name="valueation" id="rev_ins_rate" value="" /> <div class="writeArea"> <h3 id="noView">독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.</h3> <img src="https://img.ypbooks.co.kr/ypbooks/images/product/login_reply.gif" alt="독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다." /> <dl> <input type="hidden" name="review_name" id="review_name" value="현장에서 바로 써먹는 리액트 with 타입스크립트 - 리액트와 스토리북으로 배우는 컴포넌트 주도 개발" /> <dt>도서평점</dt> <dd> <input type="radio" value="1" name="radio_revRate" class="b0" /><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/> <input type="radio" value="2" name="radio_revRate" class="writeRadio" /><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/> <input type="radio" value="3" name="radio_revRate" class="writeRadio" checked="checked"/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/> <input type="radio" value="4" name="radio_revRate" class="writeRadio"/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/> <input type="radio" value="5" name="radio_revRate" class="writeRadio"/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/><img src="https://img.ypbooks.co.kr/ypbooks/images/icon/star.gif" alt=""/> </dd> <dt>내용</dt> <dd> <textarea name="review_content" id="review_content" class="writeTxt" style="height:47px;" onClick="review_popup('login');" onkeyup="fc_cut_byte(this,4000);checkByteLength($(this).val(), 'review_content', 'tcount');" hname="내용" required></textarea> <a href="javascript:review_popup('login');" class="mL10 reg-btn">등록하기</a> </dd> <dd id="tcount">0/2000자</dd> </dl> </div> </form> </div> </div> <div class="aside_wrap" > <div class="aside_wrap_topbox" > <h3 >이 분야의 베스트 </h3> <a id="goMoreB"><span >더보기 ></span></a> <ul id="fieldBest"></ul> </div> <div class="aside_wrap_btmbox" > <h3 >이 분야의 신간 </h3> <a id="goMoreN"><span >더보기 ></span></a> <ul id="fieldNew"></ul> </div> </div> </div> <form name="fieldMore" method="post" action="/book_arrange.yp"> <input type="hidden" name="targetpage" value="" /> <input type="hidden" name="pagetype" value="" /> <input type="hidden" name="c1" value="" /> </form> <script> var gaCd = "360807"; var joCd = "36"; var IMG_HEADER = "https://img.ypbooks.co.kr"; $.ajax({ url : '/servlet/dtlFieldMore', data : { gaCd : gaCd, joCd : joCd }, type : 'post', async:false, success: function(jdata) { var obj = JSON.parse(jdata); var html =""; if(obj == null){ $('.aside_wrap').hide(); } else { var fBest = obj.fieldBestList; var fNew = obj.fieldNewList; if(fBest.length > 0){ for(var i = 0; i<fBest.length; i++){ html += "<li><a href=\"javascript:fWithBookAction(" + fBest[i].book_cd + ")\">"; html += "<div class=\"aside_best_left\">" html += "<img src=\"" + IMG_HEADER + fBest[i].bookImgCourse + fBest[i].bookImgName + "\" alt=\"" + fBest[i].book_nm + "\" onerror=\"javascript:this.src='https://img.ypbooks.co.kr/ypbooks/images/empty70x100.gif'\">"; html += "<span >" + (i+1) + "</span></div>"; html += "<div class=\"aside_best_right\">"; html += "<h5>" + fBest[i].book_nm + "</h5>"; html += "<p>" + fBest[i].pub_nm + "</p>"; html += "<span><span>" + fBest[i].sale_amt + "</span>원</span></div>"; html += "</a></li>"; $('#fieldBest').html(html); } $('#goMoreB').attr('href','javascript:fn_fieldMore("best", "' + fBest[0].cateCd + '");'); } else { $('.aside_wrap_topbox').hide(); } if(fNew.length > 0){ html =""; for(var i = 0; i<fNew.length; i++){ html += "<li><a href=\"javascript:fWithBookAction(" + fNew[i].book_cd + ")\">"; html += "<div class=\"aside_best_left\">" html += "<img src=\"" + IMG_HEADER + fNew[i].bookImgCourse + fNew[i].bookImgName + "\" alt=\"" + fNew[i].book_nm + "\" onerror=\"javascript:this.src='https://img.ypbooks.co.kr/ypbooks/images/empty70x100.gif'\">"; html += "<span >" + (i+1) + "</span></div>"; html += "<div class=\"aside_best_right\">"; html += "<h5>" + fNew[i].book_nm + "</h5>"; html += "<p>" + fNew[i].pub_nm + "</p>"; html += "<span><span>" + fNew[i].sale_amt + "</span>원</span></div>"; html += "</a></li>"; $('#fieldNew').html(html); } $('#goMoreN').attr('href','javascript:fn_fieldMore("new", "' + fNew[0].cateCd + '");'); } else { $('.aside_wrap_btmbox').hide(); } } }, error:function(xhr,status,error){ } }); function fn_fieldMore(gubun, cateCd) { var form = document.fieldMore; if("best" == gubun) { form.targetpage.value = "book_week_best"; form.pagetype.value = 5; } else { form.targetpage.value = "book_topic_new"; form.pagetype.value = 4; } form.c1.value = cateCd; form.submit(); } </script> <!-- Infomation Tab --> </div><!-- Left Contents--> </div> <a href="#" class="wrapTop">맨위로가기</a> </div> </div> <script language="javascript"> $(document).ready(function(){ //2019-11-21 최상단 버튼 수정 - 강산해 var quickbtnTop = $('.top-wp'); quickbtnTop.click('a', function(e){ e.preventDefault(); $('html, body').stop() .animate({ scrollTop : 0 },800) }); }); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3SE7E26L80"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-3SE7E26L80'); </script> <!-- Global site tag (gtag.js) - Google Analytics end--> <!-- AceCounter Log Gathering Script V.8.0.AMZ2019080601 --> <script language='javascript'> var _AceGID=(function(){var Inf=['gtp20.acecounter.com','8080','AH4A44633083599','AW','0','NaPm,Ncisy','ALL','0']; var _CI=(!_AceGID)?[]:_AceGID.val;var _N=0;var _T=new Image(0,0);if(_CI.join('.').indexOf(Inf[3])<0){ _T.src ="https://"+ Inf[0] +'/?cookie'; _CI.push(Inf); _N=_CI.length; } return {o: _N,val:_CI}; })(); var _AceCounter=(function(){var G=_AceGID;var _sc=document.createElement('script');var _sm=document.getElementsByTagName('script')[0];if(G.o!=0){var _A=G.val[G.o-1];var _G=(_A[0]).substr(0,_A[0].indexOf('.'));var _C=(_A[7]!='0')?(_A[2]):_A[3];var _U=(_A[5]).replace(/\,/g,'_');_sc.src='https:'+'//cr.acecounter.com/Web/AceCounter_'+_C+'.js?gc='+_A[2]+'&py='+_A[4]+'&gd='+_G+'&gp='+_A[1]+'&up='+_U+'&rd='+(new Date().getTime());_sm.parentNode.insertBefore(_sc,_sm);return _sc.src;}})(); </script> <!-- AceCounter Log Gathering Script End --> <div id="footerArea"> <div class="footerFrame"> <menu> <div class="footerTop"> <ul class="footerMenu"> <li><a href="https://www.ypbooks.co.kr/helper.yp?targetpage=helper_greeting">회사소개</a></li> <li><a href="https://www.ypbooks.co.kr/helper.yp?targetpage=helper_ad">광고안내</a></li> <li><a href="https://www.ypbooks.co.kr/ypbooks/spmail/spmailto.jsp">입점문의</a></li> <li><a href="https://www.ypbooks.co.kr/helper.yp?targetpage=helper_withdrawal">청약철회</a></li> <li><a href="https://www.ypbooks.co.kr/helper.yp?targetpage=helper_youthpolicy">청소년보호정책</a></li> <li><a class="useTo" href="javascript:MM_openBrWindow('/ypbooks/member/member_agreement_view.jsp', 'member_agreement_view', 'width=750,height=550,scrollbars=yes')">이용약관</a></li> <li><a style="font-weight:bold;" class="private" href="javascript:MM_openBrWindow('/ypbooks/member/member_user_information_handling_view.jsp', 'member_user_information_handling_view', 'width=750,height=550,scrollbars=yes')">개인정보처리방침</a></li> <li><a class="cctv" href="javascript:MM_openBrWindow('/ypbooks/member/member_user_information_cctv.jsp', 'member_user_information_cctv', 'width=750,height=550,scrollbars=yes')">영상정보관리방침</a></li> <li><a class="mailadmin" href="https://www.ypbooks.co.kr/ypbooks/event/maintema/refusal_email.jsp">이메일 무단 수집거부</a></li> </ul> </div> </menu> <address> <div class="footerSection"> <div class="logo-box"> <h1><img src="https://img.ypbooks.co.kr/ypbooks/images/common/ypbooks_footer_newlogo.gif" alt="영풍문고 로고"/></h1> </div> <div class="w500"> <ul class="address"> <li><span class="tit">회사명 :</span> (주)영풍문고 <span style="margin-right:-7px;">ㅣ</span></li> <li><span class="tit">대표이사 :</span> 김경환</li> <li><span class="tit">소재지 :</span> 서울특별시 종로구 청계천로 41 (우)03188 </li> <li> <span class="tit">사업자 등록번호 :</span> 773-86-01800 ㅣ <span class="tit">통신판매업 신고번호 :</span> 2023-서울종로-0130 <a href="https://www.ftc.go.kr/bizCommPop.do?wrkr_no=7738601800" target="_blank" style="color:#36634f">[ 사업자정보확인 ] </a> </li> <li> <span class="tit">개인정보관리 책임자 :</span> 조순제 ㅣ <span class="tit">customer@ypbooks.co.kr ㅣ <span class="tit">대량주문 :</span> webmaster@ypbooks.co.kr </li> </ul> <span class="address"><strong class="ldt">COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED. </strong></span> </div> <div class="scm-box"> <div class="scm-head"> <a href="https://ypscm.ypbooks.co.kr/" target="_blank" title="출판사용 통합관리 시스템 SCM 바로가기"> <p>출판사용 통합관리 시스템 <strong>SCM</strong></p> </a> </div> <div class="cs-box"> <p>고객센터 <br/> <span> 1544-9020</span></p> </div> </div> </div> </address> <aside> <div class="img-con" style="width:976px; margin:20px auto;"></div> </aside> </div> </div> <div class="top-wp-wrap"> <!-- sns btn --> <a href="https://blog.naver.com/ypbookstore" target="_blank" class="yp-naver" title="영풍문고 네이버블로그 바로가기"> <img src="https://img.ypbooks.co.kr/ypbooks/images/common/naver.png" alt="영풍문고 네이버블로그" /> </a> <a href="https://www.instagram.com/ypbooks" target="_blank" class="yp-insta" title="영풍문고 인스타그램 바로가기"> <img src="https://img.ypbooks.co.kr/ypbooks/images/common/insta.png" alt="영풍문고 인스타그램" /> </a> <div class="top-wp"> <a href="#" class="wrapTop top-btn">맨위로가기</a> </div> </div> <form name="frmAction" method="post" action="/book.yp"> <input type="hidden" name="bookcd" value="" /> </form> <form name="CartFormF" method="post" action="https://www.ypbooks.co.kr/cart.yp"> <input type="hidden" name="Goods_cd" value="" /> <input type="hidden" name="Goods_div" value="B" /> <input type="hidden" name="Quantity" value="1" /> <input type="hidden" name="method" value="ins" /> <input type="hidden" name="branchDelv_div" value="Y" /> </form> <form name="CartFormD" method="post" action="https://www.ypbooks.co.kr/cart.yp"> <input type="hidden" name="Goods_cd" value="" /> <input type="hidden" name="Goods_div" value="B" /> <input type="hidden" name="Quantity" value="1" /> <input type="hidden" name="method" value="direct" /> <input type="hidden" name="delvSchedule" value="" /> </form> </body> </html>