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/기타 저장소에 추가하는 것이 좋습니다. -
Deno는 유사한 옵션을 지원합니다. 예를 들어 현재 프로젝트의 디렉토리 경로로 DENO_DIR 환경 변수를 설정할 수 있습니다.
-
Windows CMD에서 사용 :
-
또는 Windows PowerShell :
응용 프로그램이 실행되면 DeNo는 모듈을 해당 디렉토리에 캐시하여 프로젝트의 소스 제어 저장소에 추가 할 수 있습니다.
단일 자바 스크립트 또는 타입 스크립트 파일로 의존성을 번들링하는 것을 고려할 수도 있습니다. 데노 번들 명령은 한 단계 로이 작업을 수행 할 수 있습니다.
여기서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!