2016-03-01 9 views
7

Nie byłem w stanie znaleźć wartego uwagi NodeJS z tutorialem Typescript, więc nurkuję w niekierowanym i na pewno mam pytanie.Różnica między importem http = require ("http"); i importować * jako http z "http";

nie rozumiem różnicę między tymi dwoma liniami:

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

Wydają się działać w ten sam sposób, ale wyobrażam sobie, że pewnie jakiś niuans do ich zachowania, albo jeden z nich prawdopodobnie nie istniałby .

Rozumiem, że pierwsze podejście może pozwolić mi na selektywne importowanie z modułu, ale jeśli importuję cały moduł, to czy istnieje różnica między tymi dwoma? Czy istnieje preferowany sposób? Co się stanie, jeśli importuję z własnych plików, czy to coś zmieni?

+0

Możliwy duplikat [Import maszynopisu/w porównaniu z importem/wymaganiem?] (Http://stackoverflow.com/questions/35706164/typescript-import-as-vs-import-require) – rgvassar

+0

Możliwy duplikat [Nowa składnia es6 do importowania modułów commonjs/amd, czyli \ 'import foo = require ('foo') \'] (http://stackoverflow.com/questions/29596714/new-es6-syntax-for-importing-commonjs-amd-modules- ie-import-foo-require) –

Odpowiedz

4

W pierwszej postaci, tworzenia http obiektu w kodzie (całkowicie czyste), a następnie, interpreter będzie szukać każdej możliwej importu w http moduł i dołączyć je, jeden po drugim, do http obiektu w kodzie, to trochę wolniej (nie wiele) niż w drugiej postaci, gdzie otrzymujesz module.exports przedmiot zdefiniowane w module http, a następnie kopiując to odniesienie do nowego obiektu http w twoim kodzie jest to obiekt w specjalnej funkcji węzła z określonym kontekstem, nie tylko obiekt utworzony w kodzie z zawartość modułu.

1

Podczas gdy w środowisku węzła, w którym typ modułu został skonfigurowany jako wspólny JS, wynik będzie taki sam. Inne frameworki modułowe będą wykorzystywać inną składnię, a dzięki pierwszemu podejściu masz swobodę zmiany tego w dowolnym momencie.

Należy również zwrócić uwagę na podejście import * as http from 'http';, ponieważ jest to składnia importu modułu ES6, więc gdy znajdziesz się w środowisku, które w pełni obsługuje ES6, twój import będzie działał.

Powiązane problemy