javascript - smart - Importación de es6 para el significado de efectos secundarios.
solidity español (3)
Estaba leyendo la referencia de la declaración de importación es6 en MDN . La sintaxis:
import "my-module";
importará un módulo completo solo para efectos secundarios, sin importar ningún enlace. No estoy seguro de lo que significan los efectos secundarios . He estado usando con angular diciendo import "angular"
. Angular se une a la ventana pero no devuelve un objeto. Así que no estoy seguro de si esto se llamaría exactamente como un efecto secundario.
Aquí hay un ejemplo:
//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";
Cuando ejecute "b.js", verá los mensajes impresos, que se llaman
efectos secundarios
.
Considere a continuación como un código de ejemplo. Cuando intenta importar algo, no exportaría nada, pero haría muchas cosas y anula su código existente (si tiene), así que ese es el efecto secundario.
import Ember from ''ember'';
Ember.RSVP.configure(''onerror'', function(error) {
....
});
app.js:
import ''./overrides/extra'';
Cuando necesita importar algo que no exporta nada, pero hace otra cosa, este es un módulo de solo efectos secundarios. Lo importas solo para inicializarlo.
Módulos puros y no puros
Si piensa en los módulos como funciones, un módulo que solo afecta el alcance al exportar su contenido es como una función que siempre devuelve lo mismo (una función pura sin parámetros). No importa cuántas veces importará reaccionar 15.01, siempre obtendrá un objeto que contiene los mismos métodos.
Un módulo con efectos secundarios es uno que cambia el alcance de otra manera y luego devuelve algo, y sus efectos no siempre son predecibles y pueden verse afectados por fuerzas externas (función no pura). Un polyfill, por ejemplo, podría no hacer nada, porque encuentra que la característica que habilita ya es compatible con el navegador.
Ejemplos de efectos secundarios:
- Angular se une al objeto de
window
global, pero no exporta nada. - Un polyfill que habilita las características de ES6 en los navegadores que no las admiten, como babel polyfill es un efecto secundario.
- Muchos complementos de jQuery se unen al objeto jQuery global.
- Los módulos de análisis que se ejecutan en segundo plano, monitorean la interacción del usuario y envían los datos a un servidor.
- Importar CSS en un paquete web puede considerarse un efecto secundario si no está utilizando módulos CSS.