Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

What is require in JavaScript

What is require in JavaScript?

The require function is a built-in function in JavaScript, primarily seen in Node.js, that plays a critical role in importing modules. Many newcomers to JavaScript may find the concept of 'modules' puzzling, so let's break it down in simpler terms.

Understanding the Concept of Modules

Think of a module as a box. Inside this box, we have a bunch of related items that we need for a specific task. Just like you might have a box for baking that includes your whisk, baking powder, and cupcake tins, in programming, we use a module, or "box", that contains all the functions or variables (our tools) that we need to complete a task.

In JavaScript, a module is simply a file containing code. This code could contain functions, objects, or values. The idea is to keep related code bundled together in separate files (modules), making our code easier to understand and manage.

The Role of require in Importing Modules

Now, imagine you've got your baking box out because you want to bake some cupcakes. But, you can't start baking unless you open the box and bring out the tools you need. In JavaScript, require is the tool that helps us open the box and bring out the tools (functions or variables) we need.

Let's look at an example:

// file1.js
let add = function(a, b){
  return a + b;

module.exports = add;

In the code above, we've created a file file1.js (our box), and inside it, we've defined a function add (our tool). The module.exports is a special object in Node.js that we use to define what our module should expose, i.e., what tools we want to allow to be brought out of our box.

Now, let's see how we can bring out this add function using require:

// file2.js
let add = require('./file1');

console.log(add(1, 2)); // 3

In file2.js, we've used require('./file1') to import the add function from file1.js. Now we can use this add function in file2.js as demonstrated.

The require function takes the path of the file we want to import as an argument. The . indicates the current folder, so ./file1 means the file file1.js is in the current folder.

Digging Deeper: How require Works Under the Hood

Think of require as a magic wand. When you wave this wand and say the name of a module, the wand opens up the box (module), brings out the tools (functions, objects, or values), and makes them appear right in front of you.

But how does this magic wand work? When you call require with a module's file path, it first looks for the file. If found, it opens the file and executes the code inside it. When it sees module.exports, it takes whatever is assigned to it and returns it.

So, in our example, require('./file1') opened file1.js, ran the code inside it, saw that module.exports was equal to our add function, and so, returned the add function.

Conclusion: The Magic of require

In the world of JavaScript, require is a magical tool that helps us organize our code better, promotes reusability, and keeps our global scope clean. Remember the baking box analogy? Just as you wouldn't dump all your kitchen tools in one drawer, in programming, we don't dump all our code in one place. We use modules to keep our code organized, and require helps us use these modules.

The next time you use require, picture yourself as a magician waving your wand, opening boxes of tools, and creating magic in your code!