분류 전체보기
-
NodeJS - 모듈(import, export default)개발언어/Node.js 2023. 2. 20. 11:52
ECMAScript모듈 ES모듈은 공식적인 자바스크립트 모듈형식이다. 노드에서 아직까지는 CommonJS모듈을 많이 쓰긴 하지만, ES모듈이 표준으로 정해지면서 점점 ES모듈을 사용하는 비중이 늘어나고 있습니다. 브라우저에서도 ES모듈을 사용할 수 있어 브라우저와 노드 모두에 같은 모듈형시을 사용할 수 있다는 것이 장점이다. CommonJS모듈은 공식 모듈이 아니라 표준 묘듈에 가까웠다. 사실 표준 모듈이라고 단언하기도 어려운 점이 JavaScrip자체이 표준이 없었기 때문에 노드생태계 에서는 CommonJS라는 자체적인 표준을 정해서 사용하고 있었던 것이다. 하지만 브라우저 쪽에서 먼저 ES 모듈이 표준모듈로 정해지면서 노드에서도 ES모듈을 많이 사용하는 추세이다. 또한 장기적인 관점에서 모면 Comm..
-
NodeJS - 내장 객체 알아보기(this, require)개발언어/Node.js 2023. 2. 20. 09:51
const checkNumber = require("./func"); const { odd, even } = require("./var"); function checkStringOddEven(str) { if (str.length % 2) { return odd; } else { return even; } } console.log(checkNumber(10)); console.log(checkStringOddEven("hello")); this 노드에서 this를 사용할 때 주의점이 존재한다. 최상위 Scope의 this는 module.exports를 가르킨다. 그 외에는 브라우저의 자바스크립트와 동일하다. 함수 선언문 내부의 this는 global(전역) 객체를 가리킨다. 노드에서의 this는 브라우저..
-
NodeJS - const, let /템플릿 문자열, 객체 리터럴/ 화살표 함수개발언어/Node.js 2023. 2. 18. 09:13
var와 const의 Scope if(true){ var x = 3; } console.log(x); //3 if(true){ const y = 3; } console.log(y); //Uncaught ReferenceError : y is not,define var는 블록 scope를 무시하다. 그래서 위 코드에서 처럼 var로 선언한 x의 경우 if 블록 밖에서도 x에 접근할 수 있다. 반면 const로 선언한 y 같은 경우는 블록 scope를 존중하기 때문에 블록 밖에서는 const y 변수에 접근할 수 없다. var가 Scope를 가지는 경우 if(true){ const x = 3; } console.log(x); //에러 function a(){ var y = 3; } console.log(y)..
-
NodeJS - Call Stack, Back Ground, Task Queue개발언어/Node.js 2023. 2. 17. 13:38
function oneMore() { console.log("one more"); } function run() { console.log("run run"); setTimeout(() => { console.log("wow"); }, 0); new Promise((resolve) => { resolve("hi"); }).then(console.log); oneMore(); } setTimeout(runs, 5000); file을 시작하면 일단 호출스택에 무조건 anonymous가 깔린다. 그리고 위 코드 대로라면 메모리에 실행되기 위한 함수 2개가 선언된다. 그리고 메서드 setTimeout이 바로 실행된다. setTimeout메서드 실행이 완료되면 호출스택에서 setTimeout(run,5000)이 ..
-
esspress - Middleware(미들웨어)2카테고리 없음 2023. 2. 16. 11:15
Middleware express.json, express.urlencoded 클라이언트에서 post, put 요청 시 들어온 정보를 가진 req.body에 접근하기 위해 필요하 미들웨어이다. 이경우 요청 정보가 url에 들어온 것이 아니라 request body에 들어있는데, 이 값을 읽을 수 있는 구문으로 파싱하고, req.body로 옮겨주는 역할을 하는 것이 express.json, express.urlencoded이다. app.use(express.json()); app.use(express.urlencoded({ extended: true })); 원래는 boby-parser라는 미들웨어를 npm install을 통해 다운받아 장착해주어야 했는데, 이제는 express에 내장되어 express...
-
express - Middleware(미들웨어)1FrameWork/Express.js 2023. 2. 15. 11:42
Middleware 미들웨어(middleware)는 그 이름에서 알 수 있듯이 중간단계 역할을 하는 존재이다. express의 middleware를 사용해서 요청과 응답사이에 express 자체에 있는 기능외에 추가적인 기능을 넣어줄 수 있다. express 자체 미들웨어를 사용해도 되고 다른 사람이 만들어 놓은 미들웨어를 npm을 통해 다운 받아 사용해도 된다. express 사용법에서 핵심은 '미들웨어'에 있다고 할 정도로 미들웨어는 express에서 중요한 역할을 한다. 미들웨어에는 인증 수행, 예외처리,세션처리,라우터 등 많은 종류가 있다. app.use( ) 미들웨어는 app.use() 메서드를 통해 사용한다. app.set( )과의 차이점은 app.set( )은 전역으로 사용된다는 점이다. c..
-
배포 - Multi App을 만들기 위한 Docker Compose 파일 작성하기Infra/CI-CD 2023. 1. 6. 15:30
docker-compose.yml 작성 nginx,프론트엔드, 백엔드, MySQL 각각을 컨테이너를 위한 도커파일을 작성했다. 하지만 그들 컨테이너들을 다 작동 시킨다고 생도 컨테이너 환경 특성사 서로 독립적으로 존재하기 때문에 별도의 설정을 하지 않으면 독립된 컨테이너 끼리 서로 통신을 할 수 없다. 그래서 이번 게시물에서는 컨테이너들을 서로 연결시켜주기 위해서 Docker Compose를 작성한다. docker-compose.yml verion: "3" services: frontend: build: dockerfile: Dockerfile.dev context: ./frontend volumes: - /app/node_modules - ./frontend:/app stdin_open: true ng..
-
배포 - Multi App을 만들기위한 Dockerfile (Nginx)Infra/CI-CD 2023. 1. 6. 13:45
Nginx를 위한 도커 파일 만들기 클라이언트에서 Request를 보낼 때 Nginx를 이용해서 프론트와 서버에 나눠서 보내 줄 수 있다. 어떤 형태로 URL을 보내는지에 따라 나눠 보내진다. Nginx 프록시 기능 Nginx는 어떤식으로 프록시 기능을 제공할까? 클라이언트에 요청을 보낼때 정적 파일을 원하는 경우 Nginx 설정에 따라 자동적으로 ReactJS를 통해 응답을 보내주고, API 요청일 경우에는 NodeJS를 통해 응답을 보내준다. Nginx가 요청을 나눠서 보내주는 기준을 URL로 location이 /로 시작하는지, /api로 시작하는지에 따라서 나뉜다. Proxy기능을 위한 Nginx설정 전체 프로젝트를 위한 root 폴더에 프록시를 위한 nginx 폴더를 생성해주고 그안에 nginx ..