Deno Hello을 작성해보자


안녕하세요.
고코더 입니다.


 1. 라이언달의 자바스크립트 엔진으로 개발한 새로운 언어 Deno를 이전 시간에 살펴보았습니다.

 2. 이번 시간에는 Deno 각종 레퍼런스 자료를 보면서 만들어본 Hello 소스를 살펴보려고 합니다.
물런 서버를 셋팅한 상태가 아닌 참조 자료를 통해 작성해본 소스입니다.
윈도우 설치버전이 나온다면 서버 설정을 다루면서 해당 소스를 다시 리뷰해보려고 합니다.


 3. Deno에서 작성된 Hello Deno 입니다. 가장 큰 특징 몇 가지가 눈에 들어옵니다.
1
2
3
4
5
6
7
8
9
10
import { serve } from "https://deno.land/std@v0.3.2/http/server.ts";
 
const start = async () => {
  const body = new TextEncoder().encode("Hello, Deno!\n");
  for await (const req of serve(":8080")) {
    req.respond({ body });
  }
};
 
start();
cs

 4. 소스를 한번 살펴보겠습니다.

1번라인 
    - URL 형태의 참조가 보입니다. 기존에 node_module에서 다운받은걸 require 형태로 가져오는게 아니라 직접 URL을 입력합니다. 서버 실행시에 해당 URL에 있는 파일을 자동 설치하게 합니다. 

3번 라인 
    - promise 도입으로 무한 지옥의 콜백을 해결할수 있는 async, await를 기본으로 사용할 수 있게 해주었습니다. 

10번 라인
    - 서버 실행을 start 라는 변수에 담아 실행 가능합니다. 


마무리


기존에 아쉬운 부분을 개선한 node.js라고 보면 될거 같습니다.


댓글을 달아 주세요


노드가 아쉬워서 새로 프로그램을 만들었어요. 흔한 천재의 취미


안녕하세요.
고코더 입니다.




 1.수학자 출신 천재 프로그래머 라이언 달은  노드JS 리더 자리를 넘기고 조이엔트 마저 떠났습니다. 그가 창시한 노드JS에 대한 아쉬움이 있었던거 같습니다.  JSConf EU 2018에서 Node.js에 후회했던 10가지(10 Things I Regret About Node.js)를 발표하면서 새로운 서버사이드 언이인 Deno를 발표하였습니다.

 2.Node.js를 창시한 천재 개발자 라이언 달이 생각한 아쉬운 점은 이렇습니다. 

1. Promises를 고집하지 못한 것
2. 보안 문제
3. GN으로 빌드 시스템을 업데이트 하지 못한 것
4. 빌드시스템에 C++대신 FFI를 제공하지 못한 것
5. Package.json으로 인한 NPM 의존도
6. 모듈 시스템에 폴더화로 인한 파일 증가
7. node_modules 구조로 인한 알고리즘에 복잡함 
8. Require 문법에서의 .js를 쓰지 않은 실수
9. index.js의 실수


 3.그리고 C++에서 개발된 노드와 달리 Rust로 개발 하였고 이벤트 루프는 libuv에서 tokio로 교체되었습니다.
typescript를 런타임으로 가지게 되었습니다. 많은 부분에서 변화가 일어났고 새로운 언어가 탄생하였습니다.
하지만 deno가 상용화 될려면 언제가 될지 모릅니다. 혹은 정착된 노드의 자리를 뺐을 수 없을지도 모릅니다.
그렇기 때문에 갑자기 사라질 노드에 대해 걱정하시지 말고 지금 할 수 있는 최선의 언어를 공부하면서
deno를 기대하면 됩니다.

 4. Deno에서 작성된 Hello Deno

const start = async () => {
  const body = new TextEncoder().encode("Hello, Deno!\n");

  for await (const req of serve(":8080")) {
    req.respond({ body });
  }
};


start();

1번라인 : node_modules 폴더에 다운로드된 패키지를 호출하는 방식이 아니라 URL을 지정하는 방식으로 실행시에 해당 장소에서 자동으로 모듈을 설치하는 방식으로 변경 
6번 라인 : promise 도입으로 async, await를 사용할 수 있게 되었습니다. 


마무리


공부할게 너무 많아요 그만 만들어요..


댓글을 달아 주세요