Differenze tra Require vs Import

I moduli sono un costrutto chiave per conoscere JavaScript. Tratteremo i moduli JavaScript: richiedi e importa durante questo articolo Require vs Import.

Questi moduli ti consentono di mettere per iscritto un codice riutilizzabile. Utilizzando Node Package Manager (NPM), pubblicherai il tuo modulo nella community. Inoltre, NPM ti consente di utilizzare i moduli creati da sviluppatori alternativi.

C'è un sistema a 2 moduli che selezionerai in JavaScript:

L'importazione di moduli mediante richiede e il commercialismo tramite un modulo. Esportazioni ed esportazioni. foo

Importazione di moduli mediante importazione ES6 e commercialismo mediante esportazione ES6.

Ci sono margini prestazionali nell'usare l'uno sull'altro? C'è il resto che dobbiamo sempre riconoscere se abbiamo la tendenza a usare i moduli ES6 rispetto a quelli Node? Proviamo a risolvere questo problema.

Cosa è richiesto?

Require sono abituati a consumare moduli. Ti consente di incorporare moduli nei tuoi programmi. Abbraccerai i moduli Node.js intrinsecamente core, i moduli basati sulla comunità (moduli nodo) e i moduli nativi.

Diciamo che vorremmo scansionare un file dal file system. Il nodo contiene un modulo principale denominato 'fs':

const fs = require ('fs');

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

if (err) (throw err; )

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

));

Come vedrai, abbiamo la tendenza a importare il modulo "fs" nel nostro programma. Ci consente di eseguire qualsiasi funzione associata, ad esempio "readFile".

Require può cercare i file nel seguente ordine:

Moduli Node.js core integrati (come fs)

Moduli nella cartella node_modules.

Se il nome del modulo contiene un ./, / o ../, cercherà la directory all'interno del percorso indicato. Corrisponde alle estensioni: * .js, * .json e * .node.

Funzionalità richieste:

  • Avrai un caricamento dinamico ovunque il nome del modulo caricato non sia predefinito / statico o ovunque non carichi assolutamente un modulo purché sia ​​"veramente richiesto" (a seconda del flusso di codice associato).
  • Il caricamento è sincrono. Significa che se hai più requisiti, vengono caricati ed elaborati uno per uno.
  • Avrai un caricamento dinamico ovunque il nome del modulo caricato non sia predefinito / statico o ovunque non carichi assolutamente un modulo purché sia ​​"veramente richiesto" (a seconda del flusso di codice associato).
  • Il caricamento è sincrono. Significa che se hai più requisiti, vengono caricati ed elaborati uno per uno.
  • Il requisito non è generalmente basato principalmente. È estremamente improbabile che diventi ormai consuetudine che esistano moduli ES6.

Il caricamento effettivo di qualsiasi modulo che utilizza request () avviene in cinque passaggi.

Risoluzione

Caricamento in corso

involucro

Valutazione

caching

La risoluzione del primo passaggio è un passaggio racchiuso in cui node.js calcola i metodi di file, ecc. Nel secondo che viene caricato, il nodo estrae il codice all'interno del metodo corrente. Nel wrapping, il codice all'interno dell'operazione viene mostrato come mostrato in alto, quindi lo invia alla VM per la valutazione, quindi alla fine lo memorizza nella cache.

Quindi, principalmente il nodo non è mai a conoscenza di quali simboli un modulo commonJS esporta fino a quando il modulo non viene veramente valutato. E questa è spesso la più grande distinzione con i moduli ECMAScript, in quanto ESM è lessicale e quindi i simboli esportati sono meglio conosciuti prima che il codice venga veramente valutato.

Che cos'è l'importazione?

Esiste anche una proposta di import () che opera per formare dichiarazioni di importazione nidificate. A differenza della parola chiave lessical import, import () operator viene elaborato al momento o in analisi (più come richiedere). La sintassi è proprio come la seguente.

import ("pippo"). then ((module) =>) .catch ((err) =>);

Quando viene analizzato il modulo ESM associato, quindi prima che venga valutato dalla VM, viene creata una struttura chiusa denominata Record del modulo. Di conseguenza, qualsiasi errore riguardante l'inconveniente di un paio di qualsiasi immagine esportata può sollevare un errore prima dell'analisi.

Casi d'uso

  • Il caricamento del modulo su richiesta è possibile.
  • Il carico condizionale dei moduli è fattibile
  • Una promessa come la gestione asincrona.

Funzioni di importazione:

  • Userai le importazioni con nome in base alla selezione caricherai solo gli articoli che desideri. Quale farà risparmiare memoria?
  • L'importazione è asincrona (e nel caricatore di moduli ES6 attuale, ovviamente lo è) e può comportare un tocco più alto.
  • Userai le importazioni con nome in base alla selezione caricherai solo gli articoli che desideri. Quale farà risparmiare memoria?
  • L'importazione è asincrona (e nel caricatore di moduli ES6 attuale, ovviamente lo è) e può comportare un tocco più alto.
  • Le importazioni non sembrano essere ottenibili in Node a causa della versione 6.
  • Tuttavia, sarebbe disponibile nelle versioni future. Lo userai in questi giorni, usando transpiler simili a Traceur Compiler, Babel o Rollup.

Confronto testa a testa B tra Require vs Import (Infographics)

Di seguito sono riportate le 4 principali differenze tra Require vs Import

Differenze chiave tra Require vs Import

Sia Require vs Import sono scelte popolari nel mercato; parliamo di alcune delle principali differenze tra Require e Import:

  • Require è più di analisi dinamica e l'importazione è più di analisi statica
  • Richiedi errore genera durante l'esecuzione e Importa genera errore durante l'analisi
  • Require è Nonlexical e Import is Lexical
  • Richiede di rimanere dove hanno messo il file e le importazioni vengono ordinate in cima al file.
  • L'importazione viene sempre eseguita all'inizio del file e non può essere eseguita in modo condizionale. D'altra parte, può essere utilizzato in linea, in modo condizionale,

Tabella di confronto tra richiesta e importazione

Come puoi vedere ci sono molti confronti tra Require e Import. Diamo un'occhiata al confronto superiore tra Richiedi e Importa di seguito

S. No.RichiedereImportare
1Sintassi:

var dep = request ("dep");

console.log (dep.bar);

dep.foo ();

Sintassi:

import (foo, bar) da "dep";

console.log (bar);

foo ();

2Poiché l'importazione rimane nella terza fase e non viene applicata dai browser in modo nativo, non siamo in grado di eseguire alcuna performance.Attualmente, una volta che usi l'importazione nel tuo codice, il tuo transpiler lo richiede nuovamente, il sistema di modellazione commonJS. Pertanto, al giorno d'oggi ognuno è uguale.
3Sebbene non ci sia alcun profitto in termini di prestazioni in questo momento, tuttavia, consiglierò comunque di utilizzare l'importazione rispetto al requisito perché sta per essere nativo in JS e (come risultato del suo nativo) avrà prestazioni superiori a quelle richieste.Come risultato dell'importazione è nativo quindi richiedono prestazioni non superiori rispetto al confronto con l'importazione
4Avrai un caricamento dinamico ovunque il nome del modulo caricato non sia predefinito. Il caricamento è sincrono. Significa che se hai più requisiti, vengono caricati ed elaborati uno per uno. ES6È possibile utilizzare le importazioni con nome in base alla selezione caricare solo gli articoli desiderati. Quale farà risparmiare memoria? L'importazione è asincrona (e nel caricatore di moduli ES6 attuale, ovviamente lo è) e può comportare un tocco più alto. Inoltre, il sistema del modulo richiesto non si basa principalmente su base abituale. È estremamente improbabile che diventi ormai consuetudine che esistano moduli ES6.

Conclusione : richiesta vs importazione

Abbiamo appreso un modo per produrre moduli Node.js e utilizzarlo nel nostro codice. I moduli ci consentono di utilizzare semplicemente il codice. Forniscono praticità isolata da moduli alternativi. Un codice è meno complicato da gestire una volta in pezzi piccoli e di dimensioni ridotte. Questo è spesso il pensiero alla base del mantenimento delle funzioni per un solo compito o che i file contengano solo una parte o una alla volta. Se hai un'app elegante e dovresti scorrere molte o migliaia di righe di codice, allora il compito di debug o semplicemente la comprensione dell'app diventa più difficile.

Fortunatamente JavaScript ci aiuta in questo con Import vs Require. Tuttavia, scriverai il codice in un file e lo condividerai, pertanto può essere utilizzato da un altro file o file. Spero ora che tu abbia avuto un'idea più giusta sia di Import che di Require. Resta sintonizzato sul nostro blog per altri articoli come questi.

Articolo raccomandato

Questa è stata una guida alle principali differenze tra Require vs Import. Qui discutiamo anche le differenze chiave tra Require e Import con infografica e tabella comparativa. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Node.js vs PHP Performance
  2. Raspberry Pi 3 vs Arduino
  3. Matrice C # vs elenco
  4. C ++ vs Obiettivo C
  5. C ++ Vector vs Array: cosa preferire
  6. C ++ vs Visual C ++: qual è il migliore

Categoria: