Waar wordt index.js voor gebruikt in node.js-projecten?

Anders dan een leuke manier om alle bestanden in een map te vereisen (node.js vereisen alle bestanden in een map?), waar wordt index.jsvoornamelijk voor gebruikt?


Antwoord 1, autoriteit 100%

Wanneer u een map doorgeeft aan Node’s required(), zal deze controleren op een package.json voor een eindpunt. Als dat niet is gedefinieerd, wordt gecontroleerd op index.js en ten slotte index.node (een c++-extensieformaat). Dus de index.js is hoogstwaarschijnlijk het startpunt voor het vereisen van een module.

Bekijk de officiële documenten hier: http://nodejs.org/api/modules.html#modules_folders_as_modules.

U vraagt ook hoe u alle bestanden in een map nodig heeft. Meestal heb je een map nodig met een index.js die een ingekapselde interface voor die bestanden blootlegt; de manier om dit te doen zal voor elke module anders zijn. Maar stel dat u de inhoud van een map wilt opnemen wanneer u de map opneemt (let op, dit is geen best practice en komt minder vaak voor dan u zou denken). Dan zou je een index.js kunnen gebruiken die alle bestanden in de directory synchroon laadt (asynchroon exporteren vraagt meestal om vreselijke bugs) en deze als volgt aan module.exports koppelt:

var path = require('path'),
    dir = require('fs').readdirSync(__dirname + path.sep);
dir.forEach(function(filename){
    if(path.extname(filename) === '.js' && filename !== 'index.js'){
        var exportAsName = path.basename(filename);
        module.exports[exportAsName] = require( path.join( __dirname, filename) );
    }
});

Ik zie echter bijna nooit mensen die dat patroon willen gebruiken – meestal wil je dat je index.js zoiets wordt als

var part1 = require('./something-in-the-directory'),
    part2 = require('./something-else');
....
module.exports = myCoolInterfaceThatUsesPart1AndPart2UnderTheHood;

Antwoord 2, autoriteit 23%

Normaal gesproken zoekt de webserver in andere talen naar bepaalde bestanden om eerst te laden bij het bezoeken van een map zoals / met prioriteit, traditioneel is dit ofwel: index of standaard. In php zou het index.php zijn of gewoon HTML zou het index.html zijn

In Node.js is Node zelf de webserver, dus u hoeftniets index.js te noemen, maar het is gemakkelijker voor mensen om te begrijpenwelk bestand ze moeten voer eerstuit.

index.js verwerkt doorgaans het opstarten van uw app, routering en andere functies van uw toepassing en vereist andere modules om functionaliteit toe te voegen. Als u een website of web-app gebruikt, zou deze ook een eenvoudige HTTP-webserver kunnen worden die de rol van iets traditioneler zoals Apache vervangt.


Antwoord 3, autoriteit 12%

Hier is een goed artikel waarin wordt uitgelegd hoe Node.js zoekt naar de vereiste module https://medium.freecodecamp.org/requiring-modules-in-node-js-everything-you-need-to-know-e7fbd119be8, met map en index.jsbestand

Modules hoeven geen bestanden te zijn. We kunnen ook een zoek-mij-map maken
onder node_modules en plaats daar een index.js-bestand. Hetzelfde
required(‘find-me’) regel zal het index.js-bestand van die map gebruiken:

~/learn-node $ mkdir -p node_modules/find-me
~/learn-node $ echo "console.log('Found again.');" > node_modules/find-me/index.js
~/learn-node $ node
> require('find-me');
Found again.
{}
>

Antwoord 4

Laat op het feest, maar het antwoord is gewoon om een ontwikkelaar toe te staan de openbare api van de map te specificeren!

Als je een heleboel JavaScript-bestanden in een map hebt, zou slechts een kleine subset van de functies en waarden die uit deze bestanden zijn geëxporteerd, buiten de map moeten kunnen worden geëxporteerd. Deze zorgvuldig geselecteerde functies zijn de openbare api’s van de map en moeten expliciet worden geëxporteerd (of opnieuw geëxporteerd) vanuit het index.js-bestand. Het dient dus een architectonisch doel.

Other episodes