728x90
📍 26일 11.30. 화(실시간 강의)
오늘부터는 FE
가 아닌 BE
에 대해서 간략하게 배운다. 여러 프레임워크 중 Node.js
에 대해서 배우는데 한번 알아보자. 실시간 강의 때는 주로 실습을 하느라 이론을 많이 배우지 못했다. 내일 온라인 강의에서 더 자세하게 알아봐야겠다.
❏ Node.js
- Chrome V8 javscript 엔진으로 빌드된
javascript
런타임입니다. Node.js
의 메인스레드는 하나이다.JS
가 단일쓰레드인것처럼node.js
도 한 번에 한줄씩 실행한다.Docker
,Auto scaling
등을 이용해node.js
의 단일 스레드의 단점을 보완할 수 있다.offLoading
: 메인스레드와 이벤트 루프는 서로 영향을 받지 않고 계속 실행된다.(저수준의 오래 걸리는 일은node.js
에게, 고수준의 로직은 메인 스레드에서 실행한다.)LinkedIn
,NETFLIX
,UBER
등에서node.js
를 사용한다.- Glich 사이트를 통해 온라인에서 무료로
node.js
환경을 구축할 수 있다. - 예전의
JS
는 퍼포먼스가 굉장히 떨어졌다. -> 이상한 코드를 집어넣으면 홈페이지가 느려진다. ->firefox - spidermonkey
로 인해 성능이 매우 좋아졌다. >microsoft - node.js
는 해당 환경을 브라우저가 아닌 로컬환경에서 작동시키기 위해 만들었다. - 런타임 환경: 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신 상태
- 컴파일 에러: 프로그램 동작 전에 발생하는 에러
- 런타임 에러: 프로그램이 잘 동작하다가 중간에 발생하는 에러
prettier
: 개발자가 작성한 코드를 통일시키는 방법eslint
: 자잘한 문법을 잡아준다. 코드를 분석하여 문법적인 오류, 안티 패턴을 찾아준다.npm init
:package.json
생성npm init
:package.json
생성npm i eslint --save-dev
: eslint 설치- 라이브러리 ESLint 설치
npm i -g npm
./node_modules/.bin/eslint --init
: eslint 환경설정npm i prettier
: 프리티어 설치./node_modules/.bin/prettier filename
./node_modules/.bin/prettier filename write
format
: format on saveformatter
: 어떤 문법규칙으로 정리할지 선택하는 기능npm i eslint-plugin-airbnb
: airbnb 문법 사용
const http = require("http"); // http 모듈 호출
const port = 9999;
http.createServer((req, res) => {
res.end("Hello, world!"); // end: 담길데이터 다 담겼으니까 요청 글자를 보낸다.
}).listen(port, () => {
console.log("서버가 켜졌어요!!!");
});
// 이후 F5 -> node.js실행
// res.end("<p style='color:red'>gimotti!!!</p>");처럼 innerHTML와 같은 코드로도 보낼 수 있다.
commonJS
방식은Node.js
에서 사용하는 방식으로 ES2015 의 모듈 개념이 나오기 전부터 사용됨. 기본은CommonJS
이나,package.json
을 수정하면 사용할 수 있음
// CommonJS(default)
const http = require("http");
// ES2015, but 실질적인 사용은 2019년부터
import http from "http";
- 동일한
IP주소
여도 포트번호를 통해 다르게 연결할 수 있다.(default: 80) JS: Express.js
,TS: Nest.js + Typescript
(해외에서 많이 쓰이고, 국내에서는 스프링을 많이 쓴다. 스프링은 전자정부에서 권장하는 프레임워크라서 많이 사용된다. 러닝 커브가 상당히 힘들다.)- docker: 서버에 무엇인가를 설치할 때 오류가 발생함. 이런 문제를 줄이기 위해 나왔다. 설치가 이미 완료된 컨테이너를 가지고 있다. 서비스에 올리기만 하면 바로 사용 가능함. 모든 기술은 필요에 의해 나왔기 때문에 왜 기술을 사용하는지에 대해 알아두자.
- 요즘 개발은 서버와 프런트를 컨테이너 안에 두고 깃허브에서 작성한 코드 커밋 → 테스트 → 빌드 → 자동으로 서버에 올린다. 이러한 과정을
CI/CD
라고 부른다.
728x90
❏ 내장 모듈
node.js
내부에서 제공하는 모듈- 모듈명이 같으면 현재 폴더를 기준으로 가장 가까운 모듈을 먼저 가져온다.
require('fs').readFileSync
: 동기적으로 파일을 불러온다. (아무런 인코딩을 하지 않으면byte
형태로 값을 불러온다.Buffer
: 16진수 형태)
const fs = require("fs");
const result = fs.readFileSync("./test");
const buf = Buffer.from([97, 98, 99, 100, 101]);
console.log(buf.compare(result)); // 0: 서로 같으면 0을 반환, 1이면 `buf` 가 더 크고, -1이면 `result`가 더 크다.
// 에러처리는 try-catch문으로 실행
node.js
데이터 구조:stream
: 데이터를 작은 청크로 쪼개 처리한다. 큰 데이터를 처리하거나 비동기적으로 얻을 수 있는 데이터를 처리할 때 유용하다.
const fs = require("fs");
const stream = fs.createReadStream("src/test");
stream.pipe(process.stdout);
__filename
,__dirname
: 파일 경로, 폴더 경로 표시하는 명령어
console.log("__dirname", __dirname);
cosnole.log("__filename", __filename);
dns
:dns
정보접근
// family: verson(IPv4, IPv6...)
const dns = require("dns");
dns.lookup("google.com", (err, address, family) => {
console.log(address, family);
});
path
: 경로 설정
const path = require("path");
const fs = require("fs");
// 절대 경로 넣기
const filePath = path.resolve(__dirname, "./test.txt");
const fileContent = fs.readFilSync(filepath, "utf-8");
반응형
'Frontend > 엘리스 SW 엔지니어 트랙' 카테고리의 다른 글
[ 엘리스 SW 엔지니어 트랙 ] 28일차 (0) | 2021.12.02 |
---|---|
[ 엘리스 SW 엔지니어 트랙 ] 27일차 (0) | 2021.12.01 |
[ 엘리스 SW 엔지니어 트랙 ] 25일차 (0) | 2021.11.28 |
[ 엘리스 SW 엔지니어 트랙 ] 24일차 (0) | 2021.11.26 |
[ 엘리스 SW 엔지니어 트랙 ] 23일차 (0) | 2021.11.25 |
댓글