node.js와 deno

old_dorim·2022년 7월 30일
1

애증의 JavaScript

목록 보기
4/8
post-thumbnail

node와 deno

둘 다 라이언 달이 만들었다. 아버지가 같음.
deno는 node를 뒤집어서 이름을 지었다. node.js를 만든 라이언 달이 node.js의 단점을 보완해서 만들었다고 한다. 언급된 것 중 꽤 많은 단점을 node.js가 보완한 상태인데가 node.js가 이미 점유율이 너무 높아서 많이 쓰지는 않는다. 장점 중에 top-level await가 된다 이런 거 있던데 node도 이젠 되니까...
https://kdydesign.github.io/2022/02/17/deno-tutorial/
이 글을 엄청... 참고해서... 그냥 다시 정리해서 썼다.

차이점

기반 언어

node는 c/c++, javascript로 만들어졌다.
deno는 rust, typescript, javascript로 만들어졌다. deno는 typescript를 사용하기 위한 별도의 모듈이 필요없고, 자체적으로 typescript를 쓸 수 있도록 다 내장 되어 있다.

의존성 관리

node.js는 package.json, node_modules를 사용하여 패키지를 관리한다.
Deno는 패키지 관리 시스템이 없고, URL로 처리된다. 이 URL의 경로가 버전정보를 포함하여 따로 명세(package.json같은)가 필요없다.

node.js는 npm으로 패키지를 설치한 다음 require/import를 써서 가져오게 될 것이다.

deno는 이렇다.

import {format} from 'https://deno.land/std@0.126.0/datetime/mod.ts'

모듈 가져오기

위에서 보면 알 수 있겠지만,

node.js는 ES방식(import)와 common.js(require)을 둘 다 지원한다.
Deno는 ES방식(import)을 사용한다. 최신 브라우저와 더 잘 호환되기 위해서라고 한다.

예전에 node가 common.js 방식만 사용했을테니, 그게 단점이었는데 이제는 둘 다 사용이 가능하다. 둘 다 사용 가능한 것도 단점일지 장점일지는 모르겠지만.

프로미스

당연히 node.js도 프로미스 있다. 그러나 Deno는 설계부터 Promise 방식을 전제하여 만들어졌다. 모든 비동기 작업은 Promise를 반환한다.
둘 다 callback매커니즘이다.

보안

가장 이슈가 된 점이다. Deno는 실행 환경이 되는 샌드박스 안에서 코드를 실행하는 방식으로 코드를 분리하고, 권한별 접근을 허용한다. 특별히 특정 기능을 활성화하지 않는 한은 Deno로 실행되는 프로그램은 파일, 네트워크 또는 환경에 액세스할 수 없다.
node.js는 node_modules이 local에서 돌아가고, 유저가 로컬 내 정보에 접근할 수 있기 보안이 취약한 면이 있었다.

deno에서는

deno run [PERMISSION FLAG] URL

식으로 접근 권한을 설정한 채 실행할 수 있다. permission flag에 -allow-env 붙이면 환경 변수 접근 권한 허용한 채로 돌아간다. –allow-all를 붙이면 모든 접근 권한 허용한 채 돌아간다.

https://deno.land/manual@v1.18.2/getting_started/permissions

참고자료

https://kdydesign.github.io/2022/02/17/deno-tutorial/

https://www.stefanjudis.com/today-i-learned/top-level-await-is-available-in-node-js-modules/

profile
미래엔 햄스터를 다운 받을 수 있겠지? 설치류니까...

0개의 댓글

관련 채용 정보