Je lisais la déclaration d'importation es6 référence sur MDN . La syntaxe:
import "my-module";
importera un module entier pour les effets secondaires uniquement, sans importer de liaisons. Je ne sais pas ce que les effets secondaires signifient. J'utilise avec angulaire en disant import "angular"
. Angular se lie à la fenêtre mais ne renvoie pas d'objet. Je ne suis donc pas sûr que cela soit appelé exactement comme effet secondaire.
Lorsque vous devez importer quelque chose qui n'exporte rien, mais fait autre chose, il s'agit uniquement d'un module d'effets secondaires. Vous ne l'importez que pour l'initialiser.
Modules purs et non purs
Si vous considérez les modules comme des fonctions, un module qui n'affecte la portée qu'en exportant son contenu est comme une fonction qui renvoie toujours la même chose (une fonction pure sans paramètres). Peu importe combien de fois vous importerez React 15.01, vous obtiendrez toujours un objet qui contient les mêmes méthodes.
Un module avec des effets secondaires est un module qui modifie la portée par d'autres moyens, puis renvoie quelque chose, et ses effets ne sont pas toujours prévisibles et peuvent être affectés par des forces extérieures (fonction non pure). Un polyfill, par exemple, pourrait ne rien faire, car il constate que la fonctionnalité qu'il active est déjà prise en charge par le navigateur.
Exemples d'effets secondaires:
window
, mais n'exporte rien.Voici un exemple:
//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";
Lorsque vous exécutez "b.js", vous verrez les messages imprimés, appelés
effets secondaires
.
Considérez ci-dessous comme un exemple de code. lorsque vous essayez d'importer quelque chose, il n'exportera rien mais fera beaucoup de choses et remplacera votre code existant (si vous l'avez), c'est donc l'effet secondaire.
import Ember from 'ember';
Ember.RSVP.configure('onerror', function(error) {
....
});
app.js:
import './overrides/extra';