Diferencias entre Requerir vs Importar

Los módulos son una construcción clave para conocer JavaScript. Cubriremos módulos JavaScript: requerir e importar durante este artículo Requerir vs Importar.

Estos módulos le permiten poner por escrito código reutilizable. Al usar Node Package Manager (NPM), publicará su módulo en la comunidad. Además, NPM le permite utilizar módulos creados por desarrolladores alternativos.

Hay un sistema de 2 módulos que seleccionará en JavaScript:

Importar módulos usando require, y comercializar usando un módulo. Exportaciones y exportaciones. Foo

Importación de módulos con ES6 import y comercialización con ES6 export.

¿Hay alguna ventaja de rendimiento al usar uno sobre el otro? ¿Existe el resto que siempre debemos reconocer si tenemos la tendencia de usar módulos ES6 sobre los nodos? Intentemos resolver este problema.

¿Qué se requiere?

Requerir están acostumbrados a consumir módulos. Le permite incorporar módulos en sus programas. Adoptará módulos de Node.js intrínsecamente centrales, módulos basados ​​en la comunidad (módulos de nodo) y módulos nativos.

Digamos que nos gustaría escanear un archivo del sistema de archivos. El nodo contiene un módulo central denominado 'fs':

const fs = require ('fs');

fs.readFile ('./ file.txt', 'utf-8', (err, data) => (

if (err) (lanzar err; )

console.log ('datos:', datos);

));

Como verá, tenemos la tendencia de importar el módulo "fs" en nuestro programa. Nos permite cualquier función adjunta, como "readFile".

Requerir puede buscar archivos en el siguiente orden:

Módulos integrados de Node.js (como fs)

Módulos en la carpeta node_modules.

Si el nombre del módulo contiene un ./, / o ../, buscará el directorio dentro de la ruta dada. Coincide con las extensiones: * .js, * .json y * .node.

Requerir características:

  • Tendrá una carga dinámica donde el nombre del módulo cargado no esté predefinido / estático, o donde no cargue absolutamente un módulo siempre que sea "realmente necesario" (dependiendo del flujo de código enlazado).
  • La carga es sincrónica. Es decir, si tiene múltiples requisitos, se cargan y procesan uno por uno.
  • Tendrá una carga dinámica donde el nombre del módulo cargado no esté predefinido / estático, o donde no cargue absolutamente un módulo siempre que sea "realmente necesario" (dependiendo del flujo de código enlazado).
  • La carga es sincrónica. Es decir, si tiene múltiples requisitos, se cargan y procesan uno por uno.
  • El requisito no se basa habitualmente en su mayoría. Es extremadamente improbable que se convierta en costumbre actualmente que existan módulos ES6.

La carga real de cualquier módulo usando require () ocurre en cinco pasos.

Resolución

Cargando

Envase

Evaluación

Almacenamiento en caché

La resolución del primer paso es un paso cerrado donde node.js calcula los métodos de archivo, etc. dentro del segundo que se está cargando, el nodo extrae el código dentro del método actual. Al finalizar, el código dentro de la operación, como se muestra más arriba, lo envía a la VM para su evaluación, por lo que finalmente lo almacena en caché.

Por lo tanto, principalmente el nodo nunca es consciente de los símbolos que un módulo commonJS va a exportar hasta y, a menos que el módulo sea verdaderamente evaluado. Y esta es a menudo la mayor distinción con los módulos ECMAScript, ya que el ESM es léxico y, por lo tanto, los símbolos exportados son más conocidos antes de que el código sea realmente evaluado.

¿Qué es la importación?

Existe una propuesta de importación () que también funciona para formar declaraciones de importación anidadas. A diferencia de la palabra clave de importación léxica, la operación import () se procesa en el momento o el análisis (más bien se requiere). La sintaxis es como la siguiente.

import ("foo"). luego ((módulo) =>) .catch ((err) =>);

Cuando se analiza el módulo ESM asociado, antes de que la VM lo evalúe, se crea una estructura cerrada denominada Registro de módulo. Como resultado, cualquier error relacionado con el inconveniente de un par de imágenes exportadas puede generar un error antes del análisis.

Casos de uso

  • La carga del módulo bajo demanda es factible.
  • La carga condicional de los módulos es factible
  • Una promesa como el manejo asincrónico.

Importar características:

  • Utilizará las importaciones con nombre para, por selección, cargar únicamente los elementos que desea. ¿Cuál ahorrará memoria?
  • La importación es asíncrona (y en el actual ES6 Module Loader, por supuesto que lo es) y puede funcionar un poco más.
  • Utilizará las importaciones con nombre para, por selección, cargar únicamente los elementos que desea. ¿Cuál ahorrará memoria?
  • La importación es asíncrona (y en el actual ES6 Module Loader, por supuesto que lo es) y puede funcionar un poco más.
  • Las importaciones no parecen estar disponibles en Node debido a la versión 6.
  • Sin embargo, estaría disponible en futuras versiones. Lo usará en estos días, utilizando transpiladores similares a Traceur Compiler, Babel o Rollup.

Comparación cara a cara entre Requerir vs Importar (Infografía)

A continuación se muestran las 4 principales diferencias entre Requerir vs Importar

Diferencias clave entre Requerir vs Importar

Ambos Require vs Import son opciones populares en el mercado; Discutamos algunas de las principales diferencias entre Requerir e Importar:

  • Requerir es más análisis dinámico e importar es más análisis estático
  • Requiere error de lanzamiento en tiempo de ejecución e error de lanzamiento de importación al analizar
  • Requerir es no óptico e importar es léxico
  • Requiere permanecer donde colocaron el archivo y las importaciones se ordenan en la parte superior del archivo.
  • La importación siempre se ejecuta al comienzo del archivo y no se puede ejecutar condicionalmente. Por otro lado, require se puede usar en línea, condicionalmente,

Requerir tabla de comparación de importación

Como puede ver, hay muchas comparaciones entre Requerir vs Importar. Veamos la comparación superior entre Requerir vs Importar a continuación

S. No.ExigirImportar
1Sintaxis:

var dep = require ("dep");

console.log (dep.bar);

dep.foo ();

Sintaxis:

importar (foo, bar) desde "dep";

console.log (barra);

foo ();

2Como la importación permanece en la etapa tres y los navegadores no la aplican de forma nativa, no podemos ejecutar ningún rendimiento.En la actualidad, una vez que utiliza la importación en su código, sus transpiladores lo vuelven a requerir, el sistema de modelado commonJS. Por lo tanto, para el presente cada uno es igual.
3Aunque no hay ningún beneficio de rendimiento en el momento, sin embargo, aún aconsejaré usar import over require porque está a punto de ser nativo en JS y (solo como resultado de su nativo) tendrá un rendimiento superior al requerido.Como el resultado de la importación es nativo, por lo tanto, el requisito no tiene un rendimiento más alto en comparación con la importación
4 4Tendrá carga dinámica donde el nombre del módulo cargado no esté predefinido. La carga es sincrónica. Es decir, si tiene múltiples requisitos, se cargan y procesan uno por uno. ES6Puede utilizar las importaciones con nombre para, por selección, cargar únicamente los elementos que desea. ¿Cuál ahorrará memoria? La importación es asíncrona (y en el actual ES6 Module Loader, por supuesto que lo es) y puede funcionar un poco más. Además, el sistema de módulo requerido no se basa habitualmente en su mayoría. Es extremadamente improbable que se convierta en costumbre actualmente que existan módulos ES6.

Conclusión : Requerir vs Importar

Aprendimos sobre una forma de producir módulos Node.js y usarlo en nuestro código. Los módulos nos permiten utilizar código simplemente. Proporcionan practicidad aislada de módulos alternativos. Un código es menos complicado de administrar una vez que está en pequeños trozos pequeños. Este es a menudo el pensamiento detrás de mantener las funciones en una sola tarea o que los archivos contengan solo una parte o una parte a la vez. Si tiene una aplicación sofisticada y debe desplazarse por muchas o miles de líneas de código, entonces la tarea de depurar o simplemente comprender la aplicación se vuelve mucho más difícil.

Afortunadamente, JavaScript nos ayuda con esto al tener Importar vs Requerir. Sin embargo, escribirá el código en un archivo y lo compartirá, por lo tanto, puede ser utilizado por otro archivo o archivos. Espero que ahora tengas una idea más justa de Importar vs Requerir. Estén atentos a nuestro blog para más artículos como estos.

Artículo recomendado

Esto ha sido una guía de las principales diferencias entre Requerir vs Importar. Aquí también discutimos las diferencias clave Requerir vs Importar con infografías y la tabla de comparación. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. Node.js vs rendimiento PHP
  2. Raspberry Pi 3 vs Arduino
  3. C # Array vs List
  4. C ++ vs Objetivo C
  5. C ++ Vector vs Array: qué preferir
  6. C ++ vs Visual C ++: ¿Cuál es el mejor?