Giter VIP home page Giter VIP logo

nodejs-book's Introduction

Node.js 교과서의 소스코드입니다.

master 브랜치의 소스코드는 개정3판 소스코드입니다. 개정2판 소스코드는 2pan 브랜치에, 초판 소스코드는 1pan 브랜치에 있습니다.

소스코드를 받으신 후에는 터미널에서 코드의 루트경로(package.json이 있는)로 이동하신 후 npm i를 입력해서 node_modules를 설치하셔야 합니다. .env 파일과 node_modules 폴더 는 이 소스 코드에 포함되어 있지 않습니다.

코드에 오타&오류가 있거나 개선점이 있다면 적극적으로 issue 제기나 Pull Request 보내주시면 됩니다!

조현영 지음 길벗출판사 840쪽 42000원

소개

목차

1장 노드 시작하기
__1.1 핵심 개념 이해하기
____1.1.1 서버
____1.1.2 자바스크립트 런타임
____1.1.3 이벤트 기반
____1.1.4 논 블로킹 I/O
____1.1.5 싱글 스레드
__1.2 서버로서의 노드
__1.3 서버 외의 노드
__1.4 개발 환경 설정하기
____1.4.1 노드 설치하기

____1.4.2 npm 버전 업데이트하기

____1.4.3 비주얼 스튜디오 코드 설치하기
__1.5 함께 보면 좋은 자료

2장 알아두어야 할 자바스크립트
__2.1 ES2015+
____2.1.1 const, let
____2.1.2 템플릿 문자열

____2.1.3 객체 리터럴
____2.1.4 화살표 함수
____2.1.5 구조분해 할당

____2.1.6 클래스

____2.1.7 프로미스
____2.1.8 async/await

____2.1.9 Map/set

____2.1.10 널 병합/옵셔널 체이닝

__2.2 프런트엔드 자바스크립트

____2.2.1 AJAX

____2.2.2 FormData
____2.2.3 encodeURIComponent, decodeURIComponent
____2.2.4 데이터 속성과 dataset
__2.3 함께 보면 좋은 자료

3장 노드 기능 알아보기
__3.1 REPL 사용하기
__3.2 JS 파일 실행하기
__3.3 모듈로 만들기

____3.3.1 CommonJS 모듈

____3.3.2 ECMAScript 모듈

____3.3.3 다이내믹 임포트

____3.3.4 __filename, __dirname

__3.4 노드 내장 객체 알아보기

____3.4.1 global
____3.4.2 console

____3.4.3 타이머

____3.4.4 process
____3.4.5 기타 내장 객체

__3.5 노드 내장 모듈 사용하기
____3.5.1 os

____3.5.2 path
____3.5.3 url
____3.5.4 dns
____3.5.5 crypto
____3.5.6 util

____3.5.7 worker_threads

____3.5.8 child_process
____3.5.9 기타 모듈들
__3.6 파일 시스템 접근하기

____3.6.1 동기 메서드와 비동기 메서드
____3.6.2 버퍼와 스트림 이해하기
____3.6.3 기타 fs 메서드 알아보기
____3.6.4 스레드풀 알아보기

__3.7 이벤트 이해하기
__3.8 예외 처리하기
____3.8.1 자주 발생하는 에러들
__3.9 함께 보면 좋은 자료

4장 http 모듈로 서버 만들기
__4.1 요청과 응답 이해하기
__4.2 REST와 라우팅 사용하기
__4.3 쿠키와 세션 이해하기

__4.4 https와 http2
__4.5 cluster

__4.6 함께 보면 좋은 자료

5장 패키지 매니저
__5.1 npm 알아보기
__5.2 package.json으로 패키지 관리하기
__5.3 패키지 버전 이해하기
__5.4 기타 npm 명령어
__5.5 패키지 배포하기

__5.6 함께 보면 좋은 자료

6장 익스프레스 웹 서버 만들기
__6.1 익스프레스 프로젝트 시작하기
__6.2 자주 사용하는 미들웨어

____6.2.1 morgan

____6.2.2 static

____6.2.3 body-parser
____6.2.4 cookie-parser

____6.2.5 express-session

____6.2.6 미들웨어의 특성 활용하기
____6.2.7 multer
__6.3 Router 객체로 라우팅 분리하기

__6.4 req, res 객체 살펴보기
__6.5 템플릿 엔진 사용하기
____6.5.1 퍼그(제이드)
____6.5.2 넌적스

____6.5.3 에러 처리 미들웨어

__6.6 함께 보면 좋은 자료

7장 MySQL
__7.1 데이터베이스란?
__7.2 MySQL 설치하기

____7.2.1 윈도
____7.2.2 맥
____7.2.3 리눅스(우분투)

__7.3 워크벤치 설치하기

____7.3.1 윈도

____7.3.2 맥

____7.3.3 리눅스(우분투)
____7.3.4 커넥션 생성하기

__7.4 데이터베이스 및 테이블 생성하기

____7.4.1 데이터베이스 생성하기
____7.4.2 테이블 생성하기

__7.5 CRUD 작업하기

____7.5.1 Create(생성)
____7.5.2 Read(조회)
____7.5.3 Update(수정)
____7.5.4 Delete(삭제)

__7.6 시퀄라이즈 사용하기
____7.6.1 MySQL 연결하기

____7.6.2 모델 정의하기

____7.6.3 관계 정의하기
____7.6.4 쿼리 알아보기
____7.6.5 쿼리 수행하기
__7.7 함께 보면 좋은 자료

8장 몽고디비
__8.1 NoSQL vs. SQL
__8.2 몽고디비 설치하기
____8.2.1 윈도
____8.2.2 맥
____8.2.3 리눅스(우분투)
__8.3 컴퍼스 설치하기

____8.3.1 윈도
____8.3.2 맥
____8.3.3 리눅스(우분투)
____8.3.4 커넥션 생성하기

__8.4 데이터베이스 및 컬렉션 생성하기
__8.5 CRUD 작업하기
____8.5.1 Create(생성)
____8.5.2 Read(조회)

____8.5.3 Update(수정)

____8.5.4 Delete(삭제)
__8.6 몽구스 사용하기
____8.6.1 몽고디비 연결하기
____8.6.2 스키마 정의하기
____8.6.3 쿼리 수행하기
__8.7 함께 보면 좋은 자료

9장 익스프레스로 SNS 서비스 만들기
__9.1 프로젝트 구조 갖추기
__9.2 데이터베이스 세팅하기

__9.3 Passport 모듈로 로그인 구현하기
____9.3.1 로컬 로그인 구현하기
____9.3.2 카카오 로그인 구현하기

__9.4 multer 패키지로 이미지 업로드 구현하기
__9.5 프로젝트 마무리하기
____9.5.1 스스로 해보기
____9.5.2 핵심 정리
__9.6 함께 보면 좋은 자료

10장 웹 API 서버 만들기
__10.1 API 서버 이해하기
__10.2 프로젝트 구조 갖추기

__10.3 JWT 토큰으로 인증하기
__10.4 다른 서비스에서 호출하기

__10.5 SNS API 서버 만들기

__10.6 사용량 제한 구현하기
__10.7 CORS 이해하기

__10.8 프로젝트 마무리하기
____10.8.1 스스로 해보기
____10.8.2 핵심 정리
____10.8.3 함께 보면 좋은 자료

11장 노드 서비스 테스트하기
__11.1 테스트 준비하기
__11.2 유닛 테스트
__11.3 테스트 커버리지
__11.4 통합 테스트

__11.5 부하 테스트
__11.6 프로젝트 마무리하기
____11.6.1 스스로 해보기
____11.6.2 핵심 정리

12장 웹 소켓으로 실시간 데이터 전송하기
__12.1 웹 소켓 이해하기
__12.2 ws 모듈로 웹 소켓 사용하기

__12.3 Socket.IO 사용하기
__12.4 실시간 GIF 채팅방 만들기
__12.5 미들웨어와 소켓 연결하기

__12.6 채팅 구현하기

__12.7 프로젝트 마무리하기
____12.7.1 스스로 해보기

____12.7.2 핵심 정리
____12.7.3 함께 보면 좋은 자료

13장 실시간 경매 시스템 만들기
__13.1 프로젝트 구조 갖추기

__13.2 서버센트 이벤트 사용하기

__13.3 스케줄링 구현하기

__13.4 프로젝트 마무리하기

____13.4.1 스스로 해보기

____13.4.2 핵심 정리

____13.4.3 함께 보면 좋은 자료

14장 CLI 프로그램 만들기
__14.1 간단한 콘솔 명령어 만들기
__14.2 commander, inquirer 사용하기
__14.3 프로젝트 마무리하기
____14.3.1 스스로 해보기
____14.3.2 핵심 정리
____14.3.3 함께 보면 좋은 자료

15장 AWS와 GCP로 배포하기
__15.1 서비스 운영을 위한 패키지
____15.1.1 morgan과 express-session
____15.1.2 시퀄라이즈
____15.1.3 cross-env
____15.1.4 sanitize-html, csurf
____15.1.5 pm2
____15.1.6 winston

____15.1.7 helmet, hpp
____15.1.8 connect-redis
____15.1.9 nvm, n
__15.2 깃과 깃허브 사용하기
____15.2.1 깃 설치하기
____15.2.2 깃허브 사용하기
__15.3 AWS 시작하기
__15.4 AWS에 배포하기

__15.5 GCP 시작하기
__15.6 GCP에 배포하기

__15.7 함께 보면 좋은 자료

16장 서버리스 노드 개발
__16.1 서버리스 이해하기
__16.2 AWS S3 사용하기
__16.3 AWS 람다 사용하기
__16.4 구글 클라우드 스토리지 사용하기
__16.5 구글 클라우드 펑션스 사용하기
__16.6 함께 보면 좋은 자료

17장 타입스크립트 노드 개발

__17.1 타입스크립트 기본 문법

__17.2 커뮤니티 타입 정의 적용하기

__17.3 라이브러리 코드 타이핑하기

__17.4 내가 작성한 코드 타이핑하기

__17.5 함께 보면 좋은 자료

찾아보기

nodejs-book's People

Contributors

dependabot[bot] avatar hyeonjae avatar marload avatar zeroam avatar zerocho avatar zerocho2 avatar zerocho3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodejs-book's Issues

ch4.3 문의

restServer.js를 node로 실행 시킨 후
restFont.html을 실행시키면 CORS 오류가 뜹니다.

운영체제: Mac Mojave 10.14.6
브라우저: Chrome 버전 76.0.3809.100(공식 빌드) (64비트)

오류내용 입니다.
restFront.js:57 Access to XMLHttpRequest at 'file:///users' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

챕터 10.3 406 페이지 관련 문의

최근 Node.js 교과서를 통해 노드를 공부하고 있는 학생입니다.
다름이 아니오라 챕터 10 웹 API 서버 만들기 파트 중
406페이지 마지막 부분에서 제 경우 약간의 문제가 발생하는 것 같아 문의를 드립니다.

router.get('/test', verifyToken, (req, res) => {
 res.json(req.decoded);
});

이렇게 하니 뒤에 있는 호출 서버를 구현해도 아무런 결과값이 나오지 않아,
res.json(req.decoded); -> return res.json(req.decoded);
이런 식으로 바꾸니 정상적으로 값이 나옵니다.

제 환경에서의 문제인지, 혹은 누락된 부분인 것인지 검토 부탁드리겠습니다.
감사합니다.

Ch.9-3 kakao 로그인 해결.

안녕하세요. 문의가 있어서 글 남깁니다.

7월 31일자로 kakao redirect 부분에 path창이 없어지고

URI 부분만 남아있는데 이건 처리를 어떻게 해야 될까요??

여러가지 시도를 해봤는데 잘 되지 않네요.

감사합니다.

자바스크립트 타이핑 실수 확인 기능

안녕하세요 책 잘보고 있습니다.

그냥 atom으로 자바스크립트 작성하다가 실행 해보면 분명히 코드가 맞는데 오류가 날때가 많습니다. 한참 찾다가 그냥 타입핑실수 라는것을 알게 되면 무진장 허무한데요 atom에다가 Jslint 패키지를 달면 파일 저장할 때마다 사소한 오류를 찾아주더라구요. atom사용하시는 분들 Jslint 추천합니다!

/+ eslint도 소개해주시면 좋을 것같습니다.

sequelize chapter 9

http://docs.sequelizejs.com/manual/upgrade-to-v5.html

sequelize가 버전 5로 변경되면서 함수 이름자체가 바뀌었더라고요.
issue에 써두신 것 같긴 한데, 예시 코드는 그대로 find를 사용하고 있어서 해결하는 데 오래 걸렸네요.

책 설명에 따라서 공부하시는 다른 분들도 User.find가 function이 아니라고 나오는 분들이 계신다면, 위 사이트를 참고하셔서 find -> findOne을 사용하시길 바랍니다.

hasMany, belongsToMany (return sequelize.define)

안녕하세요. zerocho님, 어디다 질문해야할지 잘 모르겠어서 여기다가 올리긴 하는데 실례일런지 모르겠네요.

Node.js 교과서 362p Chapter 9 models/index.js 예제 코드를 옮겨서 실행해 봤는데, 계속해서 에러가 뜹니다.

C:\report-card\Node-SNS\models\index.js:15
db.User.hasMany(db.Post);
Cannot read property 'hasMany' of undefined

hasMany 뿐만 아니라 belongsTo, belongsToMany 전부 같은 에러가 발생하더라고요.
해결방법을 검색해봤는데,
https://www.bountysource.com/issues/27537136-limit-fails-when-used-with-belongstomany-hasmany-association-even-with-separate-true
위에 링크에서 설명하는 것 때문인가요?? 해결하려면 어떻게 해야하나요? ㅠㅠ 부탁드립니다.
몇 시간 째 막혀있어요..

zeit/ms

JWT 토큰 만료기간 시

sequelize hasMany부분 에러

저도 TypeError: Cannot read property 'hasMany' of undefined 오류 메시지가 떠서 해결 하던 중 이슈글에 해당 글이 있어서 시도 해봤데요 (seq, data) => { sequelize.define() retrun sequelize.define; } 형식으로 해줘도 안되서 또 검색하다가 다른 방법으로 즉시 함수로 만들어 보기도 했는데 마찬가지로 안되더군요. 하지만 let 변수를 사용해서 리턴 해주면 (seq, data) => { let user = sequelize.define() retrun user; } 실행이 됩니다. 왜 변수에 할당후 리턴해주는 조건에서만 실행되는거죠? 소스는 강의 소랑 같습니다.

ch 9.5.1 스스로 해보기 질문입니다.

팔로잉 끊기 해봤는데
Follow 모델 require해서 쓰려고 했는데 이걸 어디서 어떻게 받아야 할 지 모르겠더라고요.
models 폴더 안에 정의한 모델이 아니라서
그래서 삽질하다가

const {
  User,
  sequelize: {
    models: { Follow },
  },
} = require('../models');

이런 식으로 가져와서 썼는데 잘 돌아가더군요.
이런방식으로 가져오는게 맞는 건가요?
아니면 더 좋은 방법이 있을까요?

Ch 10-2 field list 문제

안녕하세요 또 질문 드립니다.

10-2 Nodebird api를 따라 만들고 있는데

서버를 시작하면 Unknown column 'domains.userId' in 'field list' 라는 오류가 발생합니다.

혹시나 해서 코드를 복붙해봤는데도 오류가 해결이 안되고 있습니다.

현재 구글링도 진행중입니다. 감사합니다.

Unhandled rejection SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client

안녕하세요, node.js 교과서로 백엔드를 열심히 공부 하고있는 주니어 프론트 엔지니어 입니다 :)
다름 아니라, 7장의 mysql에서 삽질을 너무도 오래하고 있어 질문 남깁니다

276p의 npm start 명령어를 실행했더니, 아래 사진과 같은 에러가 생겼습니다. 서치도 꽤 많이 했는데 아직 방법을 못찾았네요....ㅠㅠㅠ 답변 부탁 드려요ㅠㅠㅠ

image

mac os 사용해서 개발중입니다!

ch9/9.4/nodebird/app.js 에서 posts 라우터 코드 추가요청

안녕하세요!
9.4 파트에서 routes/post.js 라우터에 대한 내용은 있는데, app.js 에서 해당 라우터에 대한 등록이 안되어 있는 것 같습니다.
const postRouter = require('./routes/post');
app.use('/post', postRouter);
위 두줄을 추가해야할 것 같은데, 확인 부탁드립니다!!

시퀄라이즈 실습 중 오류

안녕하세요.
오류가 나네요. 다음이 오류입니다.

db.User = require('./user')(sequelize, Sequelize);
// db.Comment = require('./comment')(sequelize, Sequelize);

// db.User.hasMany(db.Comment, { foreignKey : 'commenter', sourceKey : 'id'});
// db.Comment.belongsTo(db.User, { foreignKey : 'commentar', targetKey : 'id'});

에서 저 부분에서 오류가 나네요.. 왜 그럴까요 ㅠ 책 그대로 따라한건데;;

페이지수는 전자책이라 정확히는 모르겠고 시퀄라이즈 실습하기 맨 앞부분입니다.

오류 화면

crypto.js:99
  this._handle.update(data, encoding);
               ^

TypeError: Data must be a string or a buffer
    at Hash.update (crypto.js:99:16)
    at sha1 (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/auth_41.js:31:8)
    at Object.token [as calculateToken] (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/auth_41.js:65:18)
    at new HandshakeResponse (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/packets/handshake_response.js:28:26)
    at ClientHandshake.sendCredentials (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/commands/client_handshake.js:51:31)
    at ClientHandshake.handshakeInit (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/commands/client_handshake.js:137:12)
    at ClientHandshake.execute (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/commands/command.js:39:22)
    at Connection.handlePacket (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/connection.js:455:32)
    at PacketParser.onPacket (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/connection.js:73:18)
    at PacketParser.executeStart (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/packet_parser.js:75:16)
    at Socket.<anonymous> (/Users/morykwon/Documents/project/learn-sequelize/node_modules/mysql2/lib/connection.js:80:31)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:601:20)

책에 오타를 발견해서 이곳에 말씀드려요

Nodejs 교과서 보면서 열심히 공부해보고 있습니다~
다름아니라 282페이지에 로우를 삭제하는 쿼리부분에
User.destory로 오타가 있어서 알려드려요
알고 계셨던 부분이라면 죄송합니다 .. ㅎㅎ 책이 완벽했으면 하는 바램이라서요!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.