Deno가 새로운 노드인가요?🦕

그래서 2018년 Ryan Dahl(Node.js 제작자)는 JSConf에서 ""를 발행했습니다. 그는 2009년에 Node.js를 인수한 디자인에 대해 몇 가지 후회를 포함했습니다. 강연의 거의 절반에서 실험적 프로토타입을 보여주었습니다. 이전 문제를 해결하는 것을 목표로 하는 Nodejs의 Deno 후계자라고 합니다.

Denov1.0가 출시되었고 앞으로 Node.js를 대체하는 것이 옳은 길일 수 있다고 생각합니다.

데노



Deno는 JavaScript 및 TypeScript를 위한 보안 런타임입니다. 구성 파일 없이 TypeScript를 작성하고 TypeScript 지원과 번들러가 모두 코어에 있는 단일 ES 모듈에 모두 함께 번들로 넣을 수 있다고 상상해 보십시오. Deno를 시작할 때의 느낌입니다.

V8을 사용하고 Rust로 구축된 JavaScript 및 TypeScript를 위한 현대적이고 안전한 런타임입니다. 반면 Node.js는 C++ 및 JavaScript로 작성되었습니다.

재미있는 사실: Deno는 Node.js의 아나그램입니다. sort() node 하면 deno 🦕이 됩니다.

Deno는 최신 JavaScript 및 TypeScript, WebAssembly 코드를 작성하는 데 필요한 많은 기능을 제공합니다.
  • 📦 번들러
  • 🐛 디버거
  • 🤖 테스트 러너
  • 🧶 코드 포맷터
  • 📖 문서 생성기
  • 🧵 웹어셈블리 지원

  • Deno에는 몇 가지 흥미로운 기능이 있습니다.


  • 기본적으로 보안.
    명시적으로 활성화하지 않는 한 파일, 네트워크 또는 환경에 액세스할 수 없습니다.
  • 단일 실행 파일.
    단일 실행 파일만 제공합니다.
  • TypeScript 지원
    Deno는 즉시 사용 가능한 TypeScript 컴파일러와 함께 제공됩니다.
  • 모듈 시스템
    아니요package.json, 아니요node_modules . 소스 파일은 상대 경로, 절대 경로 또는 소스 파일의 정규화된 URL을 사용하여 가져올 수 있습니다.

  •   import { test } from "https://unpkg.com/[email protected]/testing.ts"  
      import { log } from "./util.ts"
    


    Node.js의 주요 문제는 무엇입니까?


  • 모든 프로그램은 파일 시스템과 네트워크에 쓸 수 있습니다.
    이것은 특히 npm에서 신뢰할 수 없는 패키지를 설치할 때 보안 문제일 수 있습니다. The [crossenv](https://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry) incident이 그 예이다. crossenv에 쓰기 권한이 없었다면 이런 일은 일어나지 않았을 것입니다.
  • 빌드 시스템(GYP)
    GYP를 사용하여 C 라이브러리에 링크되는 모듈을 구축하는 것은 큰 고통입니다. 정상적인 DX를 얻으려면 node-gyp(GYP 위에 있는 레이어)와 다른 레이어(예: [nan](https://www.npmjs.com/package/nan) )를 사용해야 합니다.
  • 모듈 시스템과 npm
    여기서 주요 문제는 모듈 시스템이 브라우저와 호환되지 않아 코드가 완전히 동형이 아니라는 것입니다. 이는 주로 node_modules 에 종속성을 저장하고 package.json 를 갖는 두 가지 이유로 인해 발생합니다.

  • Deno 설치를 시작하겠습니다.



    PowerShell 사용(Windows):

    iwr https://deno.land/x/install/install.ps1 -useb | iex
    


    쉘:

    curl -fsSL https://deno.land/x/install/install.sh | sh
    


    자작으로:

    brew install deno
    


    이제 터미널에서 deno 명령을 실행하여 deno --version가 설치되었는지 확인하십시오.

    간단한 HTTP 서버



    이 예에는 간단한 http 서버(app.ts)가 포함되어 있습니다.

     import  { serve }  from  "https://deno.land/[email protected]/http/server.ts";
     const s =  serve({ port:  8000  });
     console.log("http://localhost:8000/");
     for  await  (const req of s)  {
        req.respond({ body:  "Hello World\n"  });
     }
    


    코드를 실행합니다.

     deno run app.ts
    


    권한 오류가 발생합니다.

     error: Uncaught PermissionDenied: read access to "http/server.ts", run  again with the --allow-read flag
    
     ► $deno$/dispatch_json.ts:40:11
     at DenoError ($deno$/errors.ts:20:5)
     ...
    


    이는 deno를 사용하여 권한의 세분성을 제어할 수 있기 때문입니다. 위의 응용 프로그램을 실행하려면 특정 권한이 허용됨을 나타내는 일부 플래그를 설정해야 합니다.

     deno run --allow-net app.ts
     > http://localhost:8000/
    


    이제 localhost:8000에서 브라우저를 엽니다. Hello World 텍스트가 표시됩니다.
    좋습니다. 이것은 deno를 사용하여 간단한 http 서버를 만드는 방법에 대한 기본적인 데모였습니다.

    See more example here



    deno에서 사용자 REST API를 만들었습니다here. Repo를 복제하고 놀아보세요. 기여는 언제나 환영입니다🎉

    결론



    Deno가 프로덕션 준비 상태가 되기까지는 아직 시간이 많이 걸리지만 Node.js보다 더 나은 자바스크립트 런타임이 되기 위한 올바른 길이라고 생각합니다🔥.
    읽어 주셔서 감사합니다! 👋👋

    내 웹사이트smithgajjar.tech 및 GitHubhere을 확인하십시오.
    나를 따라와

    좋은 웹페이지 즐겨찾기