2016-03-01 14 views
7

Tôi đã không thể tìm thấy một NodeJS đáng giá với hướng dẫn Typecript ra khỏi đó vì vậy tôi đang lặn trong không đủ điều kiện và chắc chắn tôi có một câu hỏi.Sự khác biệt giữa nhập http = yêu cầu ('http'); và nhập * như http từ 'http' ;?

Tôi không hiểu sự khác biệt giữa hai dòng sau:

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

Họ dường như hoạt động theo cùng một cách nhưng tôi tưởng tượng có lẽ một số sắc thái đến hành vi của họ hoặc nếu không một trong số họ có lẽ sẽ không tồn tại .

Tôi hiểu rằng cách tiếp cận đầu tiên có thể cho phép tôi nhập khẩu có chọn lọc từ mô-đun nhưng nếu tôi nhập tất cả mô-đun thì có sự khác biệt nào giữa hai mô-đun không? Có cách nào ưu tiên không? Điều gì sẽ xảy ra nếu tôi nhập từ các tệp của riêng mình, điều đó có thay đổi gì không?

+0

Bản sao có thể có của [Nhập khẩu kiểu nhập/khi nhập/yêu cầu?] (Http://stackoverflow.com/questions/35706164/typescript-import-as-vs-import-require) – rgvassar

+0

Có thể trùng lặp với [Cú pháp es6 mới để nhập các mô đun commonjs/amd tức là \ 'import foo = require ('foo') \'] (http://stackoverflow.com/questions/29596714/new-es6-syntax-for-importing-commonjs-amd-modules- ie-import-foo-require) –

Trả lời

4

Trong hình thức đầu tiên, bạn tạo một http đối tượng trong mã của bạn (hoàn toàn sạch), sau đó, người phiên dịch sẽ xem xét đối với từng nhập khẩu càng tốt trong http mô-đun và thêm nó, từng người một, đến http đối tượng trong mã của bạn, đây là chậm hơn một chút (không nhiều) so với hình thức thứ hai mà bạn đang nhận được module.exports đối tượng quy định tại các module http, sau đó sao chép tài liệu tham khảo này cho một người http đối tượng mới trong mã của bạn, đây là đối tượng trong một hàm nút đặc biệt với một ngữ cảnh cụ thể, không chỉ một đối tượng được tạo trong mã của bạn với nội dung của mô-đun.

1

Khi ở trong môi trường nút nơi bạn đã định cấu hình loại mô-đun là JS chung thì đầu ra sẽ giống nhau. Các khuôn khổ mô-đun khác sẽ sử dụng cú pháp khác nhau và bằng cách sử dụng cách tiếp cận đầu tiên bạn có thể linh hoạt thay đổi theo ý muốn.

Ngoài ra lưu ý về cách tiếp cận import * as http from 'http'; là cú pháp nhập khẩu mô-đun ES6, vì vậy khi bạn ở trong môi trường hỗ trợ đầy đủ ES6, việc nhập của bạn sẽ hoạt động.

Các vấn đề liên quan