2017-02-25 20 views
6

tôi sắp thực sự bối rối:Sự khác nhau giữa foo const xuất khẩu, xuất khẩu foo mặc định và module.exports = foo

  1. export const foo
  2. export default foo
  3. module.exports = foo;

Tôi biết đây là rất cơ bản nhưng có thể ai đó xin vui lòng phân biệt và giải thích cho tôi. Tôi thực sự muốn hiểu.

+0

Hãy xem xét điều này: http://stackoverflow.com/questions/40294870/module-exports-vs-export-default-in-node-js-and-es6 – technophobia

Trả lời

10

Hãy lấy từng cái một.

xuất khẩu const

export const foo 

Đây là ES6 cú pháp xuất khẩu đối với mặt hàng xuất khẩu được đặt tên. Bạn có thể có nhiều hàng hóa được đặt tên. Nó nói rằng bạn muốn xuất khẩu giá trị của biến số foo và bạn cũng tuyên bố rằng biểu tượng đó là const trong mô-đun này.

Bạn thực sự không thể tự mình sử dụng export const foo giống như bạn có thể tự mình sử dụng const foo;. Thay vào đó, bạn sẽ phải gán một cái gì đó cho nó:

export const foo = 12; 

const chỉ áp dụng cho chính mô-đun đó. Nó không ảnh hưởng đến những gì ai đó có thể làm với giá trị khi họ đã nhập giá trị từ mô-đun ở đầu kia bởi vì ở đầu kia (nơi được nhập), giá trị của nó được sao chép vào biến khác. Nếu biến khác được tạo bằng câu lệnh nhập, thì đó là tự động const ở phía nhập (bạn không thể gán cho nó) cho dù nó được khai báo ở phía xuất khẩu.

Điều này có thể được nhập khẩu như một trong những:

import {foo as localFoo} from 'lib'; 
import {foo} from 'lib'; 

Hàng hóa nhập khẩu đầu tiên foo tài sản của các mô-đun vào một biến có tên localFoo. Thứ hai nhập khẩu thuộc tính foo của mô-đun vào một biến có tên là foo.


xuất khẩu mặc định

export default foo 

Đây cũng là cú pháp ES6 và nói rằng bạn cũng muốn export các giá trị của biến foo và bạn muốn điều đó là giá trị default xuất khẩu vì vậy nếu một người nào đó chỉ nhập khẩu mô-đun và không phải bất kỳ thuộc tính nào của mô-đun, đây là biến mà chúng sẽ nhận được. Bạn chỉ có thể có một xuất khẩu default cho mỗi mô-đun.

Bên trong, việc xuất khẩu mặc định là thực sự chỉ là một tên xuất khẩu với tên đặc biệt default giao:

import localVar from 'myLib'; 

này sẽ nhận được default xuất khẩu từ mylib và gán nó là giá trị cho một biến khai báo ở địa phương tên là localVar. Ở trên là viết tắt của điều này:

import { default as localVar } from 'lib'; 

Vì vậy, xuất khẩu default chỉ cho phép bạn nhập phím tắt cho một lần xuất cụ thể. Cú pháp xuất/nhập ES6 được thiết kế để làm cho cú pháp càng ngắn càng tốt để nhập/xuất mặc định. Nhưng, vì lý do hiển nhiên, chỉ có một thuộc tính mặc định cho mỗi mô-đun.


module.exports

// inside of myModule 
module.exports = foo; 

Đây là cú pháp Node.js cho xuất khẩu giá trị của biến foo và bạn đang xuất khẩu nó ở cấp cao nhất. Khi ai đó sử dụng mô-đun này:

let x = require('myModule'); 
console.log(x); // will show the value of `foo` from the previous module 

Đây không phải là cú pháp ES6, nhưng là thường xuyên ES5 tương thích với cú pháp sử dụng cơ sở hạ tầng module.exportsrequire() xây dựng vào node.js.

2

Tuyên bố export được sử dụng để xuất chức năng, đối tượng hoặc nguyên thủy từ một tệp nhất định (hoặc mô-đun).


Xuất khẩu Named Đây là một xuất khẩu có tên trong ES6 javascript

export const foo 

được nhập khẩu như:

import { foo } from 'path' 

Mặc định Xuất Đây là một xuất khẩu mặc định (Điều này có thể được nhập khẩu sử dụng bất kỳ tên)

export default foo 

được nhập khẩu như sau:

import bar from 'path' 

Đây là xuất khẩu commonjs được sử dụng trong chương trình nodejs.

module.exports = foo;

được nhập khẩu như:

var foo = require('path') 

Đối more chi tiết

0

xuất khẩu const foo: xuất khẩu hằng (ES6) xuất khẩu foo mặc định: đối tượng xuất khẩu (ES6)

Trên báo cáo là thực thi ECMA Script 2015 (aka ES6).

Trong tệp ES6 JS bình thường, người ta có thể xuất bất kỳ đối tượng (biến) hoặc hằng số nào. Xin lưu ý rằng bạn không thể thay đổi tham chiếu liên tục, mặc dù cấu trúc bên trong có thể được sửa đổi (lạ).

Trong ES6 người ta có thể có nhiều lần xuất trong mô-đun (tệp tập lệnh). có thể được thêm vào trong tập lệnh gọi là

import {Obj1, Obj2} from module_file 

đến mặc định xuất, Một chỉ có thể có một mặc định xuất trong mô-đun. và trong khi nhập khi tên chính xác không được xác định mặc định đã được chọn.

module.exports = foo; là triển khai cũ hơn và nó giống như mặc định xuất. ngoại trừ nó được nhập khẩu với yêu cầu tuyên bố thay vì nhập khẩu

để biết thêm tham khảo https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export

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