> 웹 프론트엔드 > JS 튜토리얼 > 데노 모듈 : 사용법, 모범 사례 및 노드 모듈 가져 오기

데노 모듈 : 사용법, 모범 사례 및 노드 모듈 가져 오기

Joseph Gordon-Levitt
풀어 주다: 2025-02-12 08:33:10
원래의
775명이 탐색했습니다.

Deno Modules: Usage, Best Practices & Node Module Imports DENO 모듈을 파악하십시오 - Node.js 출신이라면 이것이 가장 큰 워크 플로 변경이됩니다. 그들이 작동하는 방법과 가장 잘 사용하는 방법, Deno에서 Node.js 모듈 및 NPM 패키지를 사용하는 방법 등을 알아보십시오.

Deno는 또한 Ryan Dahl이 개발하고 2020 년에 출시 된 Chrome V8 엔진을 기반으로 한 JavaScript 런타임입니다. 그것은 10 년간의 경험을 바탕으로 만들어졌습니다. 이것이 반드시 Node.js의 속편이거나보다 고급 대안이라는 의미는 아니지만 Node.js의 경로에서 벗어납니다. 참조 :

Deno Content Index (끝까지 스크롤)를 포함한 Deno Guide Node.js와 Deno의 비교 및 ​​특정 상황에 맞는 도구 선택에 대한 안내서

<:> 주요 차이점 : Deno는 기본적으로 TypeScript, 보안, 테스트 및 브라우저 API를 지원합니다. 모듈 처리는 주목이 적었지만 JavaScript 응용 프로그램이 만드는 방식에서 가장 큰 변화 일 수 있습니다. 데노에 대해 토론하기 전에 더 간단한 시대로 돌아가도록하겠습니다 ...

키 포인트

Deno는 Chrome V8 엔진을 기반으로 한 JavaScript 런타임입니다. 또한 CommonJS를 사용하는 node.js와 달리 절대 또는 상대 URL에서 가져온 ES2015 모듈을 사용하기로 선택합니다.
    Deno는 Node.js에 NPM과 같은 패키지 관리자가 없습니다. 대신, 스크립트에서 모듈의 URL을 처음 만날 때 글로벌 디렉토리로 다운로드하여 캐시합니다. 즉, 많은 프로젝트 수에 관계없이 특정 모듈 버전의 사본 만 필요합니다.
  • Deno는 특정 코드 버전을 참조 할 수 있도록 모듈 URL 버전을 허용합니다. 또한 단일 종속성 파일을 사용하여 프로젝트에 사용 된 각 모듈을 가져 오거나 가져 오기 맵을 사용하여 전체 또는 부분 URL에 이름을 할당하는 것을 지원합니다.
  • 플랫폼에는 보안이 내장되어 있으며 파일 시스템 및 네트워크 액세스를 제한하며 무결성 검사 옵션을 제공합니다. 또한 특별 처리없이 Node.js 및 Deno에서 실행되는 Node.js API 및 크로스 플랫폼 모듈의 사용을 지원하며, JavaScript 런타임 Ecosystem이 계속 더 일반적인 발전을 계속함에 따라 이러한 모듈은 점점 더 인기를 얻을 수 있습니다.
  • 2009 년에 JavaScript에는 표준 모듈 시스템이 없었습니다. 이 중 일부는 브라우저 배경 때문이며 ES6/ES2015가 나타나는 데 몇 년이 걸립니다.

    NPM 사용이 기하 급수적으로 증가했습니다. 그것은 가장 인기있는 패키지 관리자가되었으며, 2020 년 중반까지는 하루에 800 개 이상의 새로운 추가 기능을 갖춘 거의 150 만 개의 모듈을 호스팅했습니다 (출처 : modulecounts.com).

    데노 모듈 Deno Select ES2015 모듈을 사용하려면 절대 또는 상대 URL에서 가져올 수 있습니다.

    이 URL의 스크립트는 다음과 같이 함수 또는 기타 값을 내보내야합니다.

    Deno는 최신 웹 브라우저에서 구현 된 것과 동일한 모듈 시스템을 사용합니다.

    commonjs는 코드를 실행할 때 필요에 따라 파일 시스템에서 종속성을로드합니다.

    <code>import { something } from 'https://somewhere.com/somehow.js';
    </code>
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    ES 모듈은 코드를 실행하기 전에 추가 가져 오기를 해결하기 위해 URL에서 사전 부서지게됩니다.

    <code>export function something() { console.log('something was executed'); } </code> .cjs로 끝나는 파일은 commonjs 를 사용합니다 .mjs로 끝나는 파일은 es 모듈을 사용합니다 .js로 끝나는 파일은 의 최신 package.json을 "type": "module"으로 설정하지 않는 한, 로 끝나는 파일은 commonjs입니다.

    Deno가 단일 표준 모듈 시스템을 선택한 이유를 이해할 수 있습니다. 그러나 NPM은 노드의 성공에 중요한 요소이므로 Deno가 취소 한 것은 놀라운 일입니다.

      패키지 관리자가 없습니다.
    • NPM에 대한 한 가지 비판은 각 프로젝트에 대한 Node_Modules 디렉토리의 거대한 규모입니다. 모듈에는 특정 버전의 다른 모듈이 필요하므로 크기가 수백 메가 바이트에 도달 할 수 있습니다.
    • Deno는 처음으로 DeNo가 스크립트에서 모듈의 URL을 만나면 글로벌 디렉토리에 캐시합니다. 따라서 얼마나 많은 프로젝트를 참조하든 특정 모듈 버전의 사본 만 필요합니다.
    나는 당신이 생각하고 있다는 것을 알고 있습니다 신뢰할 수없는 url

    URL이 일시적으로 실패하거나 변경되거나 영구적으로 사라질 수 있습니다. 이는 모든 패키지 관리자에게 문제가 있으며 NPM은 과거에 문제가 발생했습니다 (URL에서도 설치할 수 있음).
      Critical Node.js 응용 프로그램의 경우 Node_Modules 디렉토리를 프로젝트의 GIT/기타 저장소에 추가하는 것이 좋습니다.
    1. Deno는 유사한 옵션을 지원합니다. 예를 들어 현재 프로젝트의 디렉토리 경로로 DENO_DIR 환경 변수를 설정할 수 있습니다.
    2. Windows CMD에서 사용 :
    3. 또는 Windows PowerShell : 응용 프로그램이 실행되면 DeNo는 모듈을 해당 디렉토리에 캐시하여 프로젝트의 소스 제어 저장소에 추가 할 수 있습니다. 단일 자바 스크립트 또는 타입 스크립트 파일로 의존성을 번들링하는 것을 고려할 수도 있습니다. 데노 번들 명령은 한 단계 로이 작업을 수행 할 수 있습니다.
    4. 여기서 myscript.js는 일반적으로 Deno Run을 사용하여 실행되는 항목 스크립트입니다. 생성 된 독립형 myscript.bundle.js 파일은 실시간 서버에 배포 할 수 있습니다.
    상단이 기다린 번들 Deno는 최상위 대기 시간을 지원합니다. 익명의 비동기 기능으로 호출을 기다릴 필요가 없습니다. 불행히도, 최상위 수준의 기다리는 것은 번들에서 실패하므로 래퍼 함수를 ​​추가해야합니다. 이것은 알려진 문제이며 향후 릴리스에서 수정 될 것입니다.

    마지막 :

    비정상적인 URL의 임의의 데노 모듈을 조심하십시오! 좋은 문서화 및 커뮤니티 입력이있는 Deno, Github 또는 Bitbucket URL은 일반적으로 더 안전합니다.

    모듈 버전 제어 이상적으로는 모듈 URL이 특정 코드 버전을 참조 할 수 있도록 버전을 가져와야합니다. 예를 들어 Deno Standard Library를 사용하면 특정 버전의 HTTP 서버 모듈을로드 할 수 있습니다. 당신은 또한 마스터 브랜치를 참조 할 수 있습니다 :

    그러나 이것은 최신 버전을 다운로드하며 향후 버전은 응용 프로그램과 호환되지 않을 수 있습니다.

    당신은 유사한 버전 제어 규칙을 사용하여 자체 서버에 데노 모듈을 게시 할 수 있지만, 더 인기가 높아짐에 따라 웹 사이트는 많은 트래픽을받을 수 있습니다. 보다 안정적인 방법은 Github와 같은 서비스 저장소를 사용하고 각 버전에 GIT 태그를 할당하는 것입니다. delopkg.com 및 unpkg.com과 같은 서비스는 공개 버전의 모듈 URL을 제공하는 데 사용될 수 있습니다.

    다중 모듈 언급

    응용 프로그램 코드 기반의 많은 파일에서 동일한 모듈 URL을 참조해야 할 수도 있습니다. 모듈을 업데이트하려면 여러 장소에서 URL을 변경해야합니다. 검색 및 교체는 작동 할 수 있지만 서투르고 오류가 발생하며 병합 충돌 가능성이 높아집니다.

    또는 프로젝트에 사용 된 각 모듈을 가져 오는 단일 종속성 파일을 사용할 수 있습니다. 일반적으로 deps.js 또는 desps.ts : 입니다
    <code>import { something } from 'https://somewhere.com/somehow.js';
    </code>
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    그런 다음 다른 프로젝트 파일에서 deps.js의 데노 모듈을 참조 할 수 있습니다.

    모듈이 업데이트되면 deps.js에서 단일 URL 참조 만 변경하면됩니다.

    또 다른 옵션은 맵을 가져 오는 것입니다. 이것은 일반적으로 import_map.json이라는 작은 json 파일로, 전체 또는 부분 URL에 이름을 할당합니다.
    <code>export function something() {
      console.log('something was executed');
    }
    </code>
    로그인 후 복사
    로그인 후 복사
    모든 스크립트에서 가져 오기 맵 이름을 참조 할 수 있습니다.

    그런 다음 Deno Run으로 응용 프로그램을 실행할 때 JSON 파일을 가져옵니다.

    가져 오기 맵은 현재 불안정한 기능이므로 -unstable 플래그가 필요합니다. 이 기능은 향후 데노 버전에서 변경 될 수 있습니다.

    조사 무결성 URL에서 참조 된 코드는 지식없이 변경되거나 해킹 될 수 있습니다. 잘 알려진 웹 사이트는 타사 클라이언트 코드에 직접 연결되어 해킹되었습니다. 스크립트가 서버 리소스에 액세스 할 수 있다면 얼마나 많은 손상이 발생할 수 있는지 상상해보십시오.

    Deno에는 보안이 내장되어 있으므로 파일 시스템 및 네트워크 액세스를 제한하려면 -Xallow-Read 및 -Xallownet과 같은 플래그로 스크립트를 실행해야합니다. 이것은 몇 가지 문제를 예방하는 데 도움이되지만 이것은 모듈 무결성을 확인하는 대체물이 아닙니다!

    Deno는 무결성 점검 옵션을 제공합니다. 단일 종속성 파일을 사용하는 경우 (위에서 언급했듯이) 가장 쉬운 일입니다.

    다음 데노 명령은 수입 된 모든 데노 모듈의 체크섬을 포함하는 lock.json 파일을 생성합니다.
    <code>import { something } from 'https://somewhere.com/somehow.js';
    </code>
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    다른 개발자가 프로젝트를 복제 할 때 각 모듈을 다시로드하고 각 모듈의 무결성을 확인하여 모듈과 동일하도록 할 수 있습니다.

    Deno는 무결성 점검을 시행하지 않습니다. 이러한 프로세스를 자동화 된 GIT 후크 또는 유사한 작업으로 실행하는 것이 가장 좋습니다.

    node.js module 사용 <.> <.> 많은 node.js apis가 Deno -Deno.land/std/node를 참조하십시오. 이것은 전체 목록이 아니지만 공통 파일, 이벤트, 버퍼 및 유틸리티 모듈을 찾을 수 있습니다.
    <code>export function something() {
      console.log('something was executed');
    }
    </code>
    로그인 후 복사
    로그인 후 복사
    거의 800 개의 타사 데노 ​​모듈의 컬렉션은 deno.land/x에 제공됩니다. Express.js, 데이터베이스 드라이버, 암호화 기능, 명령 줄 도구 등과 유사한 프레임 워크가 있습니다.

    당신은 또한 Awesome Deno와 같은 인기있는 모듈의 선택 목록을 찾을 수 있습니다.

    그러나 150 만 Node.js 모듈을 가져올 수 있습니다. 여러 CDN은 다음을 포함하여 NPM/CommonJS 패키지를 ES2015 모듈 URL로 변환 할 수 있습니다.

    <..> skypack.dev jspm.org

    <.com .com> unpkg.com

    (URL의? 모듈 쿼리 문자열 add)

    데노에서 필요한 모듈이 제대로 작동하는지 여부는 또 다른 문제입니다.

    운 좋게도 JavaScript 런타임 생태계가 계속 발전함에 따라 특별 처리없이 Node.js 및 Deno에서 실행되는 크로스 플랫폼 모듈이 나타날 수 있습니다.

    더 많은 모듈 질문

    모듈 URL을 언급하는 것은 논란의 여지가 있으며, 매우 인기있는 NPM의 사람들에게는 방해가 될 수 있습니다. 즉, Deno는 JavaScript 모듈의 사용을 단순화합니다. ES2015 모듈의 많은 잠재적 부작용을 완화하면서 몇 가지 NPM 비판을 다루고 있습니다.

    그러나 이것은 완벽하지 않습니다. NPM 모듈을 쉽게 게시 할 수 있으며 NPMJS.com을 쉽게 검색 할 수 있습니다. 검색어는 500 개의 결과를 반환 할 수 있지만 인기, 품질 및 유지 보수 요인으로 패키지를 순위로 매도 선택 마비를 최소화 할 수 있습니다.

    데노의 타사 모듈 목록에 코드를 제출하는 것은 어렵습니다. 모듈은 자동 테스트를 통과해야하지만 품질을 보장 ​​할 수 없으며 검색 결과는 알파벳순으로 배열됩니다. 모듈 수가 수천에 도달하면 기존 시스템은 지속되지 않을 것입니다. <ul> <easy> NPM에서 패키지를 쉽게 업데이트 할 수 있습니다. NPM Outdated를 실행하여 업데이트 목록을 보거나 Package.json에서 느슨한 버전 번호를 참조 할 때 NPM 설치를 실행할 수 있습니다. <li> <equ> 데노에는 동등한 업데이트 점검 옵션이 없습니다. Trex, Update Deno Dependencies 및 Deno-Check Updates를 포함한 패키지 관리자와 같은 프로젝트가 있지만 이러한 프로젝트는 일반적으로 가져 오기 맵에 의존하며 항상 시맨틱 버전의 URL에 의존합니다. </equ> </li> <to> 데노로 전환해야합니까? <li> node.js는 죽지 않았습니다. 모듈, 기술, 문서 및 런타임에서 성숙했으며 10 년의 경험이 있습니다. </li> <most> Deno는이 지식의 대부분을 사용하지만 매우 새롭고 향후 몇 년 안에 빠르게 발전 할 것입니다. 대규모 응용 프로그램에는 너무 이르지만 소규모 프로젝트의 경우 위험이 적습니다. 이미 TypeScript를 사용하거나 다른 언어를 사용하는 사람들은 훨씬 쉬운 경험을 즐길 수 있지만 Node.js 개발자는 Deno로 변환 한 다음 다시 변환하는 데 어려움이 없습니다. <p> <o> 그러나 Deno는 흥미로운 이점이 있습니다 : </o></p> <p> <system> 모듈 시스템은 클라이언트 javaScript 와 동일합니다 <ing> 많은 브라우저 API를 구현하고 있습니다. 창 객체를 참조하고, 이벤트 리스너를 설정하고, 웹 워크를 시작하고, Fetch () API를 사용하여 원격 서버 요청을 작성할 수 있습니다. <ul> <li> <is> 클라이언트 나 서버에서 작동하는 동형 자바 스크립트 라이브러리의 꿈은 큰 발전입니다. </is> </li> <ics ics> 데노 기본 <o> 데노에 대해 빨리 배우십시오. 우리의 Deno Basics 컬렉션은 Deno World와 Beyond로 첫 발걸음을 내딛는 데 도움이되며 콘텐츠를 계속 추가합니다. 전문가가되기 위해 필요한 튜토리얼을 제공 할 것입니다. Deno Getting Start 가이드의 끝에서 항상 인덱스를 업데이트 할 수 있습니다. <o> ➤ Deno 기본 사항 <questions> 데노 모듈 에 대한 질문이 자주 묻습니다 <den> 데노 모듈이란 무엇입니까? Deno 모듈은 Deno의 코드 장치로 JavaScript 및 TypeScript의 안전한 런타임입니다. Deno의 모듈은 Node.js의 CommonJS 모듈과 유사합니다. 그들은 개발자가 코드를 재사용 가능하고 캡슐화 된 블록으로 분류하여 코드를 구성하고 공유 할 수있게합니다. <li> <mod> 데노에서 모듈을 만드는 방법은 무엇입니까? 데노에서 모듈을 만드는 것은 간단합니다. 새 파일 (예 : module.ts)을 만들고 기능 또는 클래스를 정의 한 다음 내보내기 키워드를 사용하여 내보내십시오. 다른 데노 스크립트는 이러한 모듈을 가져오고 사용할 수 있습니다. </mod> </li> <mod> 데노에서 모듈을 가져 오는 방법은 무엇입니까? Deno에서 모듈을 가져 오려면 가져 오기 키워드와 모듈의 경로 또는 URL을 사용할 수 있습니다. 데노는 로컬 및 원격 수입을 지원합니다. </mod></den></questions></o></o></ics> </ul> <third> 데노에서 타사 모듈을 사용할 수 있습니까? 예, Deno는 URL에서 직접 모듈 가져 오기를 지원하므로 패키지 레지스트리 또는 GitHub 리포지토리에서 호스팅 된 타사 모듈을 사용할 수 있습니다. <p></p></third></ing></system></p></most></to></easy> </ul>

위 내용은 데노 모듈 : 사용법, 모범 사례 및 노드 모듈 가져 오기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿