đą Node.js
July 14, 2024 · View on GitHub
đœ Native API (crĂ©ation dâaddon natif en C, C++ et Rust)
Avec Node.js il est aussi possible de créer des interfaces (addons) bas niveau pour par exemple exécuter des librairies écrites en C, C++.
Cela peut amener un avantage en matiĂšre de performance (mais ce nâest pas forcĂ©ment tout le temps lâobjectif.. passer de C++ Ă JavaScript a un coup non nĂ©gligeable). Quelquefois câest aussi tout simplement car les librairies C/C++ sont dĂ©jĂ trĂšs complĂštes et maintenues (ce serait potentiellement une perte de temps de tout rĂ© implĂ©menter en JavaScript).
Quelques exemples de packages NPM étant des addons natif :
- node-argon2
- node-sqlite3
- Windrive (fait par moi mĂȘme pour rĂ©cupĂ©rer des informations du SystĂšme)
Dâailleurs pour installer ces packages, il vous est bien souvent nĂ©cessaire dâinstaller diverses dĂ©pendances pour ĂȘtre en capacitĂ© de les compiler. Je vous invite Ă consulter la section installation de Node-gyp si vous nâĂ©tiez pas au courant de cela. (Il y a aussi une option Ă lâinstallation de Node.js sur Windows).
Si câest un sujet qui vous intĂ©resse jâai moi-mĂȘme fait un talk en 2019 pour vulgariser et expliquer mes premiers pas en crĂ©ation dâaddons natif pour mon projet SlimIO.
Voici néanmoins une liste complémentaire de ressources :
- EN Node-addon-api (Pour ceux qui veulent écrire du code en C++).
- EN Node-gyp (Câest lâoutil qui va vous servir Ă compiler votre addon).
- EN Node.js addons examples
- EN Prebuildify (Pour la création de prebuilds)
Documentation et outil GYP :
Talks sur la native API de Node.js :
- EN N-API - Next Generation Node API for Native Modules
- EN N-API: The Next Generation Node.js API is Ready!
- EN Next Generation N-API: A Hands-on Workshop
- EN N-API on JerryScript
Bonus:
Rust
Divers liens pour faire des addons natif avec Rust plutĂŽt que C et C++ :
- Node.js N-API for Rust.
- NAPI-RS
- EN Supercharge Your Node.js With Rust
- EN Heavy computation in Node.js with Rust - Jean Burellier
âŹ ïž đą Node.js: đĄ Event-loop | âĄïž đą Node.js: đ CLI