Sept 11, 2019
5 things you probably don't know about Node.js
A few days ago, i was reading an article about how works Node.js child process and how the main process keep running in one core. After that, I stared to dig deeper in the Node.js repo to learning more about its internal behavior. These type of things, are the things you‘ll never find in an online course. That's why today i'm writing this post.
Most learning resources available on the internet (specially the online courses) about Node.js always teach about external packages and not about its runtime environment. The developers who are satisfied just with those resources, let’s consider them hypothetically “average”.
Now, we will learn about some tricky things about Node itself, which level up our proficiency with this ecosystem.
The CallStack is part of V8 Engine
Yes, it is. The V8 uses the Callstack as part of its architecture to keep the track of the functions invocations. So, what is the CallStack? It’s a data structure that records all the function calls, every time we invoke a function it take a references and keep doing so for each nested others invocation, including those who makes recursion.
Is important to keep the Callstack not too much busy because there are just one CallStack available per Node process. Moreover, it just pop the nested function when this one finish and return a value.
So, The Event Loop is inside V8 too?
Why Node.js exit?
When a Node program runs, It will start the event loop automatically, and keep iterating while there something in execution, So, when the Call Stack and the Event Loop don’t have nothing else to do, the process exit. Node keep the process running when you start a timer or an HTTP server.
Node external dependencies
- OpenSSL (crypto)
All of them are external to Node. They have their own source code. They have their own license. Node just uses them. Is good to learn this point, to be fair and not blame everything on Node ;).
Node.js could be used without V8
Node.js require a VM to run the main process but it is not necessarily V8. V8 is Google’s open source project not originally build by the node.js team. It’s not very common but You can use Chakra instead.
Circular module dependencies are allowed
If you have two modules who require each other, will throw an error? Well no. In these cases, you will warned because when the circular require loop start, the first file will not be done yet, so the second file just will render as a partial version.
// module1.js require("./module2") // module2.js require("./module1");
I hope you have learn new things and they can help you in your journey working with this amazing environment.
If you felt exiting about these type of topics, let me know with a comment.