Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
440 views
in Technique[技术] by (71.8m points)

javascript - es6 import for side effects meaning

I was reading the es6 import statement reference on MDN. The syntax:

import "my-module";

will import an entire module for side effects only, without importing any bindings. I am not sure what side effects mean. I have been using with angular by saying import "angular". Angular binds to window but does not return a object. So I am not sure if this would be called as a side effect exactly.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

When you need to import something that doesn't export anything, but does something else, this is a side effect only module. You import it only to initialize it.

Pure and Non Pure Modules

If you think about modules as functions, a module that only effects the scope by exporting it's content is like a function that always returns the same thing (a pure function without parameters). No matter how many times you'll import react 15.01, you'll always get an object that contains the same methods.

A module with side-effects is one that changes the scope in other ways then returning something, and it's effects are not always predictable, and can be affected by outside forces (non pure function). A polyfill for example, might not do anything, because it finds that the feature that it enables is already supported by the browser.

Examples of side effects:

  • Angular binds to the global window object, but doesn't export anything.
  • A polyfill that enables ES6 features in the browsers that don't support them, like babel polyfill is a side effect.
  • Many jQuery plugins attach themselves to the global jQuery object.
  • Analytics modules that run in the background, monitor user interaction, and send the data to a server.
  • Importing CSS in webpack can be considered a side effect if you're not using CSS modules.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...