git
Deno는 Node.js를 개발한 Ryan Dahl이 만든 최신 프레임워크
Deno는 Node보다 더 나은 패키지 관리 시스템과 안전한 런타임을 갖도록 하였다.
패키지를 관리와 서브파티 모듈을 사용하는 시스템 표준 라이브러리를 제공
V8엔진으로 구축
Typescript 측면으로 보았을 때 Node.js는 .ts 확장자를 js로 변환하여 실행하지만 Deno는 자체적으로 ts 확장자를 언어로 제공하기 때문에 변환없이 구동이 가능하다.
index.ts
const add = (a: number, b: number): number => { return a + b; } console.log(add(1, 2));
deno run index.ts
->3
커맨드 만으로 실행이 가능한다
.env
TEST="fdsafdsa"
file.ts
async function readPrivate() : Promise<void> { const key: string = await Deno.readTextFile("key.txt"); console.log(key); } readPrivate(); console.log(Deno.env.get("TEST")) Deno.writeTextFile("key.txt", "악성코드 심기")
deno run file.ts 를 할경우
바로 읽을 수 없다.
y : 허용 , n : 비허용
해당 방법으로 키값이나 환경변수 값을 외부에서 접근을 방지할 수 있음
deno run --allow-read --allow-env --allow-write file.ts
--allow-read : 읽기 허용
--allow-env : 환경변수 접근 허용
--allow-write : 수정 허용
npm은 package.json 파일에 프로젝트에 대한 설정파일을 담당하고 있는데 deno에서는 deno.json이 설정파일을 담당한다.
{
"compilerOptions": {
"allowJs": true
},
"tasks": {
"start" : "deno task hello && world",
"hello" : "deno run --allow-read --allow-write --allow-env file.ts",
"world" : "deno --allow-env file.ts"
}
package.json 처럼 compilerOptions 등 공통되게 사용가는하며, scripts 부분은 tasks로 설정이 가능하다.
deno task 커맨드 입력시 Task의 설정된 내용을 모두 확인 가능
사용법
deno task start
deno의 경우 node_module 없이 import를 하여 사용가능
(node_module, package.json 삭제 후)
index.ts
import {config} from "https://deno.land/x/dotenv/mod.ts"; console.log(config);
deno run index.ts
async 입력없이 최상단에 await 구문 사용 가능
fetch.ts
const result = await fetch("https://catfact.ninja/face") .then((res) => res.json()) .then((data) => console.log(data))
커맨드 입력
deno run fetch.ts
deno는 외부와 연결이 되지 않도록 막는 기능이 있음