source

import http = required ";와 import *를 'http'에서 http로 import " 사이의 차이;?

manysource 2023. 6. 14. 21:56

import http = required ";와 import *를 'http'에서 http로 import " 사이의 차이;?

가치 있는 노드를 찾지 못했습니다.JS와 Typescript 튜토리얼이 있어서 가이드 없이 다이빙하고 있는데 질문이 있습니다.

이 두 줄의 차이를 이해할 수 없습니다.

import * as http from 'http';
// and
import http = require('http');

그들은 같은 방식으로 작동하는 것처럼 보이지만, 저는 그들의 행동에 약간의 뉘앙스가 있거나 아니면 그들 중 하나가 아마도 존재하지 않을 것이라고 생각합니다.

첫 번째 접근 방식을 사용하면 모듈에서 선택적으로 가져올 수 있다는 것을 이해합니다. 하지만 모든 모듈을 가져올 경우 두 가지 사이에 차이가 있습니까?선호하는 방법이 있습니까?내 파일에서 가져오는 경우 변경 사항이 있습니까?

첫 번째 양식에서, 당신은 당신의 코드에 http 객체를 만들고(완전히 깨끗함), 인터프리터는 http 모듈에서 가능한 각 가져오기를 찾고, 그것을 당신의 코드에 있는 http 객체에 하나씩 추가할 것입니다. 이것은 당신이 module을 얻는 두 번째 양식보다 조금 느립니다.exports 객체는 http 모듈에 정의되어 있습니다.그런 다음 이 참조를 코드의 http 개체로 복사합니다. 이것은 모듈의 내용으로 코드에서 생성된 개체뿐만 아니라 특정 컨텍스트를 가진 노드 특수 함수의 개체입니다.

import http = require('http') //Common JS

이것은 일반적인 JS 모듈입니다.버전 12.2 이전에는 노드 JS에서 모듈을 사용할 수 있는 유일한 방법이었습니다.

import * as http from 'http'; //ES 6

이것은 ES6 모듈입니다.ECMA스크립트 6 표준에서는 모듈이 Javascript에 의해 기본적으로 지원됩니다.Node JS는 버전 12.2에서 이 기능을 구현했습니다.

이 두 가지 중에서, 저는 항상 ES6 모듈을 선호합니다. 왜냐하면 그것은 Javascript 구현의 일부이기 때문입니다.ES6 모듈은 브라우저에서도 지원됩니다.그러나 Common JS는 동기식이기 때문에 브라우저에서 지원되지 않습니다.AMD 모듈은 공통과 달리 비동기식이기 때문에 ES 6 이전 브라우저에서 사용되었습니다.제이에스

모듈 유형을 공통 JS로 구성한 노드 환경에서는 출력이 동일합니다.다른 모듈 프레임워크는 다른 구문을 사용하며 첫 번째 접근 방식을 사용하면 원하는 대로 변경할 수 있습니다.

또주만한것은할목에 참고 .import * as http from 'http';접근 방식은 ES6 모듈 가져오기 구문이므로 ES6를 완전히 지원하는 환경에 있으면 가져오기가 작동합니다.

언급URL : https://stackoverflow.com/questions/35728117/difference-between-import-http-requirehttp-and-import-as-http-from-htt