2016-12-13 16 views
12

Tôi đã đọc báo cáo nhập khẩu es6 reference on MDN. Cú pháp:Nhập khẩu es6 cho các tác dụng phụ có nghĩa là

import "my-module"; 

sẽ chỉ nhập toàn bộ mô-đun cho các tác dụng phụ mà không nhập bất kỳ ràng buộc nào. Tôi không chắc chắn tác dụng phụ của là gì. Tôi đã sử dụng với góc bằng cách nói import "angular". Góc liên kết với cửa sổ nhưng không trả về một đối tượng. Vì vậy, tôi không chắc chắn nếu điều này sẽ được gọi là một tác dụng phụ chính xác.

Trả lời

12

Khi bạn cần nhập nội dung nào đó không xuất được gì, nhưng thực hiện điều gì đó khác, đây chỉ là mô-đun phụ có hiệu lực phụ. Bạn chỉ nhập nó để khởi tạo nó.

tinh khiết và không Modules tinh khiết

Nếu bạn nghĩ về mô-đun như chức năng, một mô-đun mà chỉ ảnh hưởng phạm vi bằng cách xuất nội dung của nó cũng giống như một hàm luôn trả về điều tương tự (một chức năng tinh khiết không có tham số). Không có vấn đề bao nhiêu lần bạn sẽ nhập khẩu phản ứng 15.01, bạn sẽ luôn luôn nhận được một đối tượng có chứa các phương pháp tương tự.

Mô-đun có tác dụng phụ là một thay đổi phạm vi theo những cách khác rồi trả về một cái gì đó, và hiệu ứng của nó không phải lúc nào cũng có thể dự đoán được, và có thể bị ảnh hưởng bởi lực bên ngoài (chức năng không thuần túy). Ví dụ, một polyfill, có thể không làm bất cứ điều gì, bởi vì nó thấy rằng tính năng mà nó cho phép đã được trình duyệt hỗ trợ.

Ví dụ về các tác dụng phụ:

  • với phím tắt kiễu góc tới đối tượng window toàn cầu, nhưng không xuất khẩu bất cứ điều gì.
  • Một vùng chèn cho phép các tính năng ES6 trong các trình duyệt không hỗ trợ chúng, như babel polyfill là một tác dụng phụ.
  • Nhiều plugin jQuery tự đính kèm với đối tượng jQuery toàn cầu.
  • Mô-đun Analytics chạy trong nền, theo dõi tương tác của người dùng và gửi dữ liệu đến máy chủ.
  • Nhập CSS trong webpack có thể được coi là tác dụng phụ nếu bạn không sử dụng các mô-đun CSS.
0

"Tác dụng phụ" có thể có nghĩa là nhiều thứ. Nó có thể đang sửa đổi các biến toàn cầu, nó có thể đang sử dụng một số API môi trường (ví dụ viết một tệp trong Node.js hoặc thực hiện cuộc gọi Ajax trong trình duyệt).

2

Hãy xem xét Dưới đây làm mã mẫu. khi bạn cố gắng nhập một cái gì đó, nó sẽ không xuất khẩu bất cứ điều gì nhưng làm nhiều điều và ghi đè mã hiện tại của bạn (nếu bạn có) vì vậy đó là tác dụng phụ.

import Ember from 'ember'; 
Ember.RSVP.configure('onerror', function(error) { 
    .... 
}); 

app.js:

import './overrides/extra'; 
5

Dưới đây là một ví dụ:

//a.js 
function print1() 
{ 
    console.log("export print1 is working"); 
} 

function print2() 
{ 
    console.log("non-export print2 is working"); 
} 

print1(); 
print2(); 

//b.js 
import "a.js"; 

Khi bạn chạy "b.js", bạn sẽ thấy những thông điệp được in, được gọi là

tác dụng phụ

.

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