웹 소캣 HTML5에 새로 추가된 스펙 실시간 양방향 데이터 전송을 위한 기술, HTTP와 다르게 WS라는 프로토콜을 사용함. SocketIO 웹 소캣을 편리하게 사용할 수 있도록 도와주는 라이브러리 실시간 경매 시스템 만들기 1. npm init / package.json 파일 작성 2. 사용자 모델, 제품 모델, 경매 모델 구성 user.js auction.js good.js DB에도 테이블이 생성되었다. 3. 로그인, 미들웨어 라우터 생성, 프론트 코드 작성(생략) 4. 서버센트 이벤트 사용하기 온라인 경매이므로 모든 사람이 같은 시간에 경매가 종료되어야함. 모든 사람에게 같은 시간이 표시되어야함. =>서버센트 이벤트를 사용해 시간을 받아오기(주기적으로 서버 시간 조회하는 경우 양방향 통신 불필요)..
🤍Passport 모듈 SNS 서비스에는 로그인 기능이 필요하다. Passport 모듈을 사용하면 세션과 쿠키 등 복잡한 과정 없이 간편하게 로그인 구현이 가능하다. 요즘 자주 사용되는 카카오톡, 페이스북 등의 SNS 로그인 또한 Passport를 사용해서 해결할 수 있다. 🤍Passport 모듈로 로컬 로그인 구현하기 1. Passport 모듈 설치 npm install passport passport-local passport-kakao bcrypt 2. Passport 관련 index.js 작성 serializeUser : 로그인 시 실행되며, 세션 객체에 어떤 데이터를 저장할지 정하는 메서드임. deserializeUser : 매 요청 시 실행됨. 여기서 매개변수는 사용자의 아이디이며 serial..
🤍익스프레스로 SNS 서비스 만들기 앞서 배운 내용들을 바탕으로 로그인, 이미지 업로드, 게시글 작성, 해시태그 검색, 팔로잉 등의 기능이 있는 실제 웹 서비스 제작해보기. 프로젝트 구조 갖추기 1. nodebird 폴더 만든 후 package.json 생성 2. 템플릿 파일 넣을 views 폴더, 라우터 넣을 routes 폴더, 정적 파일 넣을 public 폴더 생성. 3. 프론트단 html 작성 {% extends 'layout.html' %} {% block content %} 이메일 닉네임 비밀번호 회원가입 {% endblock %} {% block script %} {% endblock %} {% extends 'layout.html' %} {% block content %} {% if user..
🤍시퀄라이즈란? MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리 MySQL 이외에 MariaDB, PostgreSQL, SQLite 등등 같이 사용 가능 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문에 편리함. 🤍시퀄라이즈 실습 1. 프로젝트 생성 2. sequelize, sequelize-cli, mysql2 패키지 설치 npm install express morgan nunjucks sequelize sequelize-cli mysql2 npm i -D nodemon 3. 시퀄라이즈를 통해 익스프레스 앱과 MySQL 연결 app.js configure.json 4. 테이블 생성 & 모델 정의 댓글 테이블 회원 테이블 모델 정의 npm start 명령어로 실행하면 테이블이 생성되는 것을 확..
🔍미들웨어란 미들웨어는 익스프레스의 핵심이다. 요청과 응답의 중간(미들 middle)에 위치하여 미들웨어라 부른다. 미들웨어는 요청과 응답을 조작하여 기능을 추가하기도 하고 나쁜 요청을 걸러내기도 한다. app.use(미들웨어) 모든 요청에서 미들웨어 실행 app.use('/abc', 미들웨어) abc로 시작하는 요청에서 미들웨어 실행 app.post('/abc',미들웨어) abc로 시작하는 POST 요청에서 미들웨어 실행 🔍morgan, cookie-parser, express-session, dotenv 설치 dotenv를 제외한 다른 패키지는 미들웨어임. dotenv는 process.env를 관리하기 위해 설치. app.use(morgan('dev')); 인수로는 dev 이외에도 combined, ..
🔍fs 모듈이란? 파일 시스템에 접근하는 모듈 파일 생성, 삭제, 읽기, 쓰기, 폴더도 만들거나 지울 수 있다. 🔍동기 메서드와 비동기 메서드 //readme.txt 저를 여러 번 읽어보세요. 비동기방식으로 파일 하나를 여러 번 읽어보기 실행 결과 비동기메서드들은 백그라운드에 해당 파일을 읽으라고만 요청하고 다음 작업으로 넘어감 => 따라서 파일 읽기 요청만 세 번 보내고 console.log('끝')을 찍는다. 수백 개의 I/O 요청이 들어와도 메인 스레드는 백그라운드에 요청 처리를 위임, 얼마든지 추가 요청을 받을 수 있음. 동기방식으로 순서대로 읽어보기 실행 결과 readFile 대신 readFileSync 메서드 사용 동기방식의 경우 수백 개 이상의 요청이 들어올 때 성능에 문제가 생김(이전 작업..
노드는 자바스크립트보다 더 많은 기능을 제공함. (운영 체제 정보 접근, 클라이언트 요청 url 정보 가져오기 등등...) -> 모듈 제공 노드의 모듈은 버전마다 차이가 있음. 자주 사용하는 모듈 위주로 알아보도록 한다. 🔍os 운영 체제의 정보를 가져옴. os.arch() : process.arch와 동일 os.platform() : process.platform과 동일 os.type() : 운영 체제 종류를 보여줌 os.uptime() : 운영체제 부팅 이후 흐른 시간(초)을 보여줌. os.hostname() : 컴퓨터 이름을 보여줌 os.release() : 운영체제 버전을 보여줌. os.homedir() : 홈 디렉터리 경로를 보여줌 os.tmpdir() : 임시 파일 저장 경로를 보여줌 os.c..
REPL 사용하기 자바스크립트는 스크립트 언어이므로 미리 컴파일을 하지 않아도 즉석에서 코드 실행이 가능함. REPL : 입력 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복(Loop) REPL을 종료하려면 ctrl+c 2회 누르거나 .exit 입력하면 됨. 모듈로 만들기 Node.js는 코드를 모듈로 만들 수 있다는 점에서 자바스크립트와 다르다. 🔍모듈 : 특정한 기능을 하는 함수나 변수들의 집합 모듈로 만들어놓으면 여러 프로그램에서 해당 모듈 재사용이 가능함. var.js const odd = '홀수입니다'; const even = '짝수입니다'; module.exports = { odd, even }; func.js var.js에 변수 두 개를 선언..