Dag Tweakers
Sinds enkele jaren ben ik actief als webdeveloper op zowel professioneel als hobby-vlak en ik werk vooral met NodeJS. Nu, tot op heden heb ik altijd gebruik gemaakt van de ingebouwde functie "require()" voor het laden van modules binnen mijn nodejs app.
Echter ben ik onlaatst erop gewezen dat ik best switch naar de import statement van ES6. Deze gebruik ik al actief binnen Angular applicaties. Nu is het zo dat require en import prima werken an sich maar ik verder geen grote verschillen zie tussen de twee buiten de syntax. Ik heb de voorbije dagen actief research gedaan en ben daardoor op enkele blogposts, stackoverflow vragen en quora vragen terecht gekomen. Van wat ik begrijp is het volgende:
* CommonJS gebruikt de syntax "require()" en "module.exports." of gewoon "exports." waar ES6 import gebruik maakt van "export" of "export default" (wat een verschil maakt in hoe je zaken kunt importeren). ES6 bied dus duidelijk meer flexibiliteit. Maar voor mijn doeleinden lijkt dit een beetje overbodig omdat require prima werkt voor wat het moet.
* require is van NodeJS zelf en maakt deel uit van CommonJS (wat dat verder ook mag inhouden)
* import is volgens documentatie van NodeJS (https://nodejs.org/api/esm.html) de standaard voor het importeren van modules
* NodeJS heeft zowel support voor commonjs modules als esm maar ook pas recent
* import wordt naar het schijnt gesupported door alle browsers en kan client side gebruikt worden (niet getest)
En zo zijn er nog trouwens maar het is veel om op te sommen. Al bij al vind ik het behoorlijk verwarrend omdat de ene tutorial require gebruikt en de ander niet en de éné post or antwoord iets anders beweerd dan de ander. Er lijkt daarin een grote inconsistentie te zijn en ik heb tot op heden nog altijd geen concreet antwoord gehad op de volgende vragen:
1) Waarom zou ik ES import verkiezen boven require? Als in, welk probleem lost die ES import op?
2) Vervalt de support voor require binnen een aantal jaar?
3) Wat is het verschil tussen CommonJS en ES? Is CommonJS iets specifiek van Node?
Bronnen die ik hiervoor al onder andere gesonsulteerd heb zijn:
- https://flexiple.com/javascript-require-vs-import/
- https://stackoverflow.com...een-requirex-and-import-x
- https://www.educba.com/require-vs-import/
- https://dev.to/ckim328/javascript-s-import-vs-require-4nm3
- bovenstaande url naar nodejs documentatie
Ik denk namelijk dat ik al wel intussen voldoende gelezen heb om op zijn minst de verschillen te weten (hopelijk correct). Maar geen enkele van die posts, comments en antwoorden geven mij een goede reden waarom ik zou moeten switchen. Daarom dus dat ik de hulp wil inroepen van mijn mede tweakers.
Sinds enkele jaren ben ik actief als webdeveloper op zowel professioneel als hobby-vlak en ik werk vooral met NodeJS. Nu, tot op heden heb ik altijd gebruik gemaakt van de ingebouwde functie "require()" voor het laden van modules binnen mijn nodejs app.
Echter ben ik onlaatst erop gewezen dat ik best switch naar de import statement van ES6. Deze gebruik ik al actief binnen Angular applicaties. Nu is het zo dat require en import prima werken an sich maar ik verder geen grote verschillen zie tussen de twee buiten de syntax. Ik heb de voorbije dagen actief research gedaan en ben daardoor op enkele blogposts, stackoverflow vragen en quora vragen terecht gekomen. Van wat ik begrijp is het volgende:
* CommonJS gebruikt de syntax "require()" en "module.exports." of gewoon "exports." waar ES6 import gebruik maakt van "export" of "export default" (wat een verschil maakt in hoe je zaken kunt importeren). ES6 bied dus duidelijk meer flexibiliteit. Maar voor mijn doeleinden lijkt dit een beetje overbodig omdat require prima werkt voor wat het moet.
* require is van NodeJS zelf en maakt deel uit van CommonJS (wat dat verder ook mag inhouden)
* import is volgens documentatie van NodeJS (https://nodejs.org/api/esm.html) de standaard voor het importeren van modules
* NodeJS heeft zowel support voor commonjs modules als esm maar ook pas recent
* import wordt naar het schijnt gesupported door alle browsers en kan client side gebruikt worden (niet getest)
En zo zijn er nog trouwens maar het is veel om op te sommen. Al bij al vind ik het behoorlijk verwarrend omdat de ene tutorial require gebruikt en de ander niet en de éné post or antwoord iets anders beweerd dan de ander. Er lijkt daarin een grote inconsistentie te zijn en ik heb tot op heden nog altijd geen concreet antwoord gehad op de volgende vragen:
1) Waarom zou ik ES import verkiezen boven require? Als in, welk probleem lost die ES import op?
2) Vervalt de support voor require binnen een aantal jaar?
3) Wat is het verschil tussen CommonJS en ES? Is CommonJS iets specifiek van Node?
Bronnen die ik hiervoor al onder andere gesonsulteerd heb zijn:
- https://flexiple.com/javascript-require-vs-import/
- https://stackoverflow.com...een-requirex-and-import-x
- https://www.educba.com/require-vs-import/
- https://dev.to/ckim328/javascript-s-import-vs-require-4nm3
- bovenstaande url naar nodejs documentatie
Ik denk namelijk dat ik al wel intussen voldoende gelezen heb om op zijn minst de verschillen te weten (hopelijk correct). Maar geen enkele van die posts, comments en antwoorden geven mij een goede reden waarom ik zou moeten switchen. Daarom dus dat ik de hulp wil inroepen van mijn mede tweakers.