- style of building the architecture of your program.
- it is deterministic or returns the same result if given the same arguments
- it does not cause any side effects
- easier to test
- something that is unchanging or can't change
- expressions in a program can be changed by its value without changing the results of the program.
- a piece of code that has a certain functionality needed in the application you are creating in node.js it's just like how react has separate components that do stuff.
- it creates a global object
- we set the module with the functionality to a variable then require setting it to a global object.
-module.export = (whatever module you want available)
- creating separate modules in node.js