Deno에서 does.ts 및 module.ts가 나쁜 이유
마찬가지로 라이브러리를 생성하는 경우 사실상의 표준은 모든 모듈을 단일
mod.ts
파일로 내보내는 것입니다.어떻게든 이 규칙은 개발 경험을 더 좋게 만드는 것으로 가정합니다.
그러나 그 대신에 이 규칙이 반대로 작동하는 이유를 설명하겠습니다. 즉, 컴파일 시간을 늘려 개발 경험을 악화시키고 있습니다(간단한 벤치마크 기준으로 약 200%).
벤치마크를 보려면 this repository에서 확인하십시오.
deps.ts
가 있다고 상상해 보십시오.export {A} from 'https://deno.land/x/a/mod.ts'
export {B} from 'https://deno.land/x/b/mod.ts'
그리고
main.ts
파일:import {A} from './deps.ts'
deno run main.ts
를 실행하면 Deno는 실제로 B
의 종속성을 해결하고 main.ts
가 실제로 필요하지 않은 경우에도 유형을 확인합니다. .궁극적으로 대부분의 컴파일 시간은 사용하지 않는 가져오기를 컴파일하는 데 낭비됩니다.
또한
B
를 수행하여 번들을 시도하면 Deno가 tree shaking 을 지원하지 않기 때문에 번들 출력에도 deps.ts
및 해당 종속성이 포함되어 있음을 알 수 있습니다.그렇다면 이 문제를 어떻게 해결할 수 있을까요? 간단합니다. 직접 URL 가져오기를 사용하세요! 이렇게 하면 컴파일 시간이 단축되고 번들 크기가 향상됩니다.
// main.ts
import {A} from 'https://deno.land/x/a/mod.ts'
deno bundle main.ts
를 사용할 때 발생하는 모든 문제입니다.Deno의 제작자 Ryan Dhal을 찾을 수 있습니다.
Lodash 함수를 코드로 가져오려고 할 때 갑자기 번들 크기가 너무 커진 것을 기억하십니까?
그렇다면 Lodash 커뮤니티는 이를 어떻게 해결할까요? 그들은 publishing a package for each function 으로 합니다.
따라서 피하고 싶은 경우:
불필요하게 긴 컴파일 시간
블랙홀로 붕괴하는 Deno 패키지.
전체 Deno 커뮤니티는 모든 종속성/내보내기를 하나의
B
/npm
파일에 배치하는 것을 중단해야 합니다.deps.ts
및 mod.ts
를 계속 사용하면 Deno 개발자가 사용하지 않는 종속성을 컴파일하기 위해 귀중한 시간을 낭비하여 개발 경험을 방해하게 됩니다.다음은 종속성 관리를 위해 내가 제안하는 것이므로 모든 종속성을 다음과 같이 단일
deps.ts
에 넣는 대신// deps.ts
export {A} from 'https://deno.land/x/a/mod.ts'
export {B} from 'https://deno.land/x/b/mod.ts'
각각을
mod.ts
폴더 아래에 별도의 파일로 내보냅니다.// deps/a.ts
export {A} from 'https://deno.land/x/a/mod.ts'
// deps/b.ts
export {B} from 'https://deno.land/x/b/mod.ts'
Ok, without
mod.ts
how do we allow library users to discover API easily?
Simple, instead of placing all export into a singlemod.ts
, split them into separate files under themod
folder.
예를 들어 다음을 갖는 대신:
// mod.ts
export {A} from './a.ts'
export {B} from './b.ts'
하다:
// mod/a.ts
export {A} from '../src/a.ts'
// mod/b.ts
export {B} from '../src/b.ts'
마지막으로, 전체 Deno 커뮤니티가 이 deps.ts/mod.ts 관행을 버리면 Deno 자체는 트리 쉐이킹 및 skip-unused-import 기능(구현하기 매우 어려운 기능)을 구현할 필요조차 없을 수 있습니다.
사회적 거리두기가 백신에 의존하지 않고 코로나 바이러스 확산을 막는 것과 같습니다.
이 글이 이치에 맞다고 생각하고 Deno의 미래를 위해 동료 Deno 개발자와 공유해 주세요.
Reference
이 문제에 관하여(Deno에서 does.ts 및 module.ts가 나쁜 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wongjiahau/why-deps-ts-and-mod-ts-is-bad-in-deno-bjo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)