
Node.js 20.6, la derni�re mise � jour de ce populaire moteur d'ex�cution JavaScript, a �t� publi�e. Parmi les nouvelles fonctionnalit�s, il y a la possibilit� de configurer des variables d'environnement dans un fichier transmis � l'application lors de son lancement, ainsi qu'une prise en charge exp�rimentale du langage C++ ramassant les miettes (garbage-collected) via un projet V8 appel� Oilpan. V8 est le moteur JavaScript et WebAssembly �galement utilis� par Google Chrome, Deno et de nombreux autres projets.
L'id�e de la prise en charge des fichiers .env est que les d�veloppeurs peuvent initialiser une application Node.js avec une configuration pr�d�finie. Un fichier .env est une collection de paires cl�-valeur au format INI. Ces fichiers permettent de d�finir � la fois des variables d'environnement et des options Node. La d�finition des options Node se fait via la variable d'environnement NODE_OPTIONS, qui est un ensemble d�limit� par des espaces de ce qui serait autrement des options de ligne de commande.
Changements importants
Prise en charge int�gr�e des fichiers .env
� partir de la version 20.6.0 de Node.js, Node.js prend en charge les fichiers .env pour la configuration des variables d'environnement. Votre fichier de configuration doit respecter le format INI, chaque ligne contenant une paire cl�-valeur pour une variable d'environnement. Pour initialiser votre application Node.js avec des configurations pr�d�finies, utilisez la commande CLI suivante : node --env-file=config.env index.js.
Par exemple, vous pouvez acc�der � la variable d'environnement suivante en utilisant process.env.PASSWORD lors de l'initialisation de votre application :
Code : | S�lectionner tout |
PASSWORD=nodejs
En plus des variables d'environnement, ce changement vous permet de d�finir vos NODE_OPTIONS directement dans le fichier .env, �liminant ainsi le besoin de l'inclure dans votre package.json.
import.meta.resolve non marqu�
Dans les modules ES, import.meta.resolve(specifier) peut �tre utilis� pour obtenir une cha�ne d'URL absolue � laquelle specifier se r�sout, similaire � require.resolve dans CommonJS. Cela permet d'aligner Node.js sur les navigateurs et les autres syst�mes d'ex�cution c�t� serveur.
Nouveau API register sur node:module pour les hooks de personnalisation de module ; nouveau hook initialize
Il y a un nouveau API register disponible sur node:module pour sp�cifier un fichier qui exporte les hooks de personnalisation de module, et passer des donn�es aux hooks, et �tablir des canaux de communication avec eux. La partie "d�finir le fichier avec le hook" �tait auparavant g�r�e par un drapeau --experimental-loader, mais lorsque les hooks ont �t� d�plac�s dans un thread d�di� dans la version 20.0.0, il a �t� n�cessaire de fournir un moyen de communiquer entre le thread principal (application) et le thread des hooks. Cela peut maintenant se faire en appelant register depuis le thread principal et en transmettant des donn�es, y compris des instances de MessageChannel.
Il est encourag� aux utilisateurs de migrer vers une approche qui utilise --import avec register, comme par exemple :
Code : | S�lectionner tout |
node --import ./file-that-calls-register.js ./app.js
L'utilisation de --import garantit que les hooks de personnalisation sont enregistr�s avant l'ex�cution de tout code d'application, m�me le point d'entr�e.
Le hook de personnalisation de module load peut maintenant supporter CommonJS
Les auteurs de hook de personnalisation de modules peuvent d�sormais g�rer les sources de modules ES et CommonJS dans le hook load. Cela fonctionne pour les modules CommonJS r�f�renc�s via import ou require, tant que le point d'entr�e principal de l'application est g�r� par le chargeur de module ES (par exemple parce que le point d'entr�e est un fichier de module ES, ou si l'option --import est pass�e). Cela devrait simplifier la personnalisation du processus de chargement des modules Node.js, car les auteurs de paquets peuvent personnaliser davantage Node.js sans s'appuyer sur des API obsol�tes telles que require.extensions.
Les addons Node.js C++ ont maintenant un support exp�rimental pour cppgc (Oilpan), une biblioth�que de garbage collection C++ dans V8.
D�sormais, lorsque Node.js d�marre, il s'assure qu'il y a un v8::CppHeap attach� � l'isolat V8. Cela permet aux utilisateurs d'allouer dans v8::CppHeap en utilisant les en-t�tes <cppgc/*> de V8, qui sont maintenant �galement inclus dans les en-t�tes de Node.js disponibles pour les addons. Notez que puisque Node.js n'int�gre que la biblioth�que cppgc provenant de V8, la stabilit� de l'ABI de cppgc n'est actuellement pas garantie dans les mises � jour semver-minor et -patch, mais il n'est pas attendu � ce que l'ABI se brise souvent, car elle est stable et test�e dans Chromium depuis des ann�es. Il pourrait �tre envisag� d'inclure cppgc dans les garanties de stabilit� de l'ABI lorsqu'il sera suffisamment adopt� en interne et en externe.
Pour aider les auteurs d'addons � cr�er des r�f�rences JavaScript vers C++ dont le garbage collector de V8 peut �tre conscient, une fonction d'aide node::SetCppgcReference(isolate, js_object, cppgc_object) a �t� ajout�e � node.h. V8 pourrait fournir une alternative native dans le futur, qui pourrait alors remplacer cette fonction d'aide sp�cifique � Node.js. En attendant, les utilisateurs peuvent utiliser cette API pour �viter d'avoir � coder en dur la disposition des objets enveloppants JavaScript. Un exemple de cr�ation d'objets C++ collect�s dans le tas unifi� et envelopp�s dans un objet JavaScript peut �tre trouv� dans les tests de l'addon Node.js.
L'aide node::ObjectWrap existante continuerait � fonctionner, tandis que la gestion des objets bas�e sur cppgc sert d'alternative avec certains avantages mentionn�s dans l'article du blog V8 � propos d'Oilpan.
Source : Nodejs
Et vous ?

Voir aussi :



Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.