deno로 만드는 서버
deno가 2020년 5월 14일 v1.0.0이 릴리즈 되었습니다. deno와 node를 비교하며 웹페이지에 Hello World를 띄워보도록 하겠습니다.
node!
우선 node를 이용하여 Hello World를 띄우도록 하겠습니다.
1 | mkdir node && cd node && npm init -y |
node폴더를 만들고 node플더로 이동하여 npm init으로 package.json파일을 생성합니다.
1 | npm install express |
npm으로 express를 설치합니다.
1 | touch index.js |
index.js 파일을 생성합니다.
1 | const express = require('express'); |
위 코드를 index.js에 작성합니다. npm으로 설치된 express를 app으로 실행하고 8000번 port를 이용하여 앱을 실행합니다.
1 | node index.js |
터미널에서 node를 이용하여 index.js를 실행합니다.
http://localhost:8000로 접속하면 Hello World를 확인 할 수 있습니다.
deno!
deno를 이용하여 Hello World를 띄우도록 하겠습니다.
1 | mkdir deno && cd deno && touch index.ts |
deno 폴더를 생성하고 deno 폴더로 이동하여 index.ts 파일을 생성합니다.
1 | import { serve } from 'https://deno.land/std/http/server.ts'; |
위 코드를 index.ts에 작성합니다. https://deno.land/std/http/server.ts url을 이용하여 코드를 불러와 serve 함수를 받고 8000 포트를 사용하고, 응답을 body에 Hello World로 보냅니다.
1 | deno index.ts |
deno로 index.ts를 실행하면 error: Found argument 'index.ts' which wasn't expected, or isn't valid in this context 에러가 발생합니다. deno는 node와는 다르게 옵션을 추가하여 실행해야 합니다.
1 | deno run --allow-net --allow-read index.ts |
deno는 docker와 비슷하게 실행해야하는데 --allow-net 옵션으로 네트워크 통신을 허용해야하고 --allow-read 옵션으로 index.ts 파일을 읽을 수 있도록 허용해야합니다.
처음 deno로 파일을 실행하게되면 Compile file:///Users/username/Desktop/deno/index.ts와 같이 컴파일을 한 후 파일이 실행됩니다.
정리
deno는 node와는 다르게 package.json 파일, node_modules 폴더 등이 필요없고 url을 통해 직접 코드를 불러 올 수 있습니다.
1 | deno -h |
2020년5월16일 현재 deno의 문서는 아직까지 부족 한 것 같습니다. Docs: https://deno.land/std/manual.md 의 문서 역시 아래와 같이 링크가 깨져있어 볼 수 없습니다.
아직 v1.0.0이기 때문에 마이너 업데이트가 필요해 보입니다. 그래도 npm을 벗어난 개발이 매우 흥미롭습니다.