Javascript는 브라우저에 내장되어 있다.
NodeJS가 하는 일
- JS를 브라우저 밖으로 가지고 나와서 유저가 사용할 수 있게 함. 브라우저 밖에서 유저의 컴퓨터에서 돌아가게끔.. 브라우저 밖의 Javascript. Javascript를 쓰기 위해 브라우저를 사용하지 않아도 된다.
ex) 로컬 PC에서 브라우저와 동일한 명령어를 다룰 수 있음
- Javascript를 이용해서 파일 시스템을 다룰 수 있다.
ex) 서버 만들기, Web Scrapper 만들기, 웹페이지에 접속해서 정보들 수집하기, 모바일 앱 만들기, electron 어플 만들기,
Next JS
Typescript 프레임워크
Node.js 백엔드를 만들기 위한 프레임워크
NodeJS에는 규칙이 없다. 자유로워서 좋지만 스스로 구조를 짜야하므로 큰 규모의 프로젝트를 할 때는 어렵다.
ex) 함수형? 객체지향형? 폴더는 어디에? 파일명? 라우터는 어디에?
NodeJS를 파이썬+장고, 자바+스프링 수준으로 만든다.
자유분방한 node.js를 규칙, 패턴, 방법이 있도록 해준다. -> 코드가 믿음직하고 안정감 있게 해준다.
장점
1. Node.js 개발자들은 안정감과 규칙, 구조에 매료됨
2. node.js가 궁금했던 Java+Spring 개발자들은 Java+Spring과 구조, 규칙이 비슷하다는 점에서 안정감을 느끼고 빨리 적응할 수 있다.
==> 구조와 규칙 + 타입스크립트 + node.js 환경
Deno
좀 더 안전하고 개선된 nodeJS
탄생
- RYAN DAHL이 만듦 (nodeJS도 만듦)
- nodeJS의 아쉬움 (npm 만든 것, node 모듈)
장점
1. package.json, node modules, npm이 없음
=> npm이 없으면.. 뭔가를 import 하고 싶다면 브라우저에 하듯이 url을 추가하면 프로젝트에 추가된다. 깃허브/깃랩/빗버킷 등에서 코드를 자유롭게 가져올 수 있다.
=> node modules은 점점 추가하다보면 엉망이 되어서 좋은 방법이 아니다. 모듈을 클릭하면 하위에 하위에 하위에... 있어서 가끔은 뭘 갖고있는지도 모른다.
2. 코드의 권한과 범위를 지정하여 안전하다.
=> nodeJS는 npm을 다운로드해서 나의 컴퓨터에서 실행할 때 바이러스가 실행될 수도 있다. deno는 샌드박스 안에서 코드를 돌린다. 코드는 실행되지만 나의 컴퓨터에서 분리된 상태로 돌아간다.
ex) 이 코드는 파일 시스템에만 접근할 수 있고 인터넷 연결은 안된다고 정확하게 deno에게 알려주는 것이다.
이 코드는 인터넷 연결이 되지만, 내 파일을 열람할 수 없다.
3. Typescript를 사용한다 + Rust/Tokio/C++로 쓰여졌다.
npm : 중앙 집중 방식. closed source(깃허브에 인수됨)라는 회사가 오픈소스 파일을 관리함
nodeJS 사용하는 이유
ex) 넷플릭스. 스트리밍, 리얼타임, API
커스터마이징이 많이 필요할 때
아무것도 없는 상태에서 무언가를 만들어 나가는 것
django : CRUD