Cain Nuke
Cain Nuke

Reputation: 3079

How to break a single node.js file into many?

Hi,

I have an app on node.js which consists of a single file app.js that looks like this:

//variables
app = require("express")();
//many more variables here

//functions
function dosomething {}
//many more functions here

but since its getting a little too long I would like to break it into several files, one for variables only (variables.js) and another one for functions only (functions.js) and load them from app.js like this like when you do it with php

//variables
include(variables.js);

//functions
include(functions.js);

is it even possible to do that? Or I have to include everything in one single file like I do now?

Thank you.

Upvotes: 1

Views: 298

Answers (3)

milad shirian
milad shirian

Reputation: 328

You should get help from the JavaScript modular system (preferably COMMONJS). For example, suppose we have two files: 1-module.js 2-app.js So now let's create this files

module.js

let name = "hello world";
function printSomething(message) {
  console.log(message)
}
//here export all function and variable
module.exports.name = name;
module.exports.printSomething = printSomething

ok so Well now it is enough that "require" this file in main file :

main.js

// we 
const {name, printSomething} = require("./module.js");
printSomething(name);

for export all variable You need to create an object and specify your variables as a property:

let host = "localhost"
let dbname = "laravel_8"
let username = "root"
let password = "root"
function doSomething() {
 console.log("hello");
}
module.exports = {host, dbname, username, password, doSomething}

so in main file :

const variables = require("./module.js")
//host
let host = variables.host
//dbname
let dbname = variables.dbname
//function doSomething
let doSomething = variables.doSomething;
doSomething()
// or directly
variables.doSomething()

In fact, in php we use the "->" symbol to access properties, and in JavaScript we use "."

Upvotes: 0

Caio Mar
Caio Mar

Reputation: 2624

Importing API Endpoints

You can do this by using app.use(...) and point each endpoint to a specific file like so:

const express = require("express");

const app = express();

// User Functions
app.use("/api/user", require("./routes/api/user"));

//Orders functions
app.use("/api/orders/", require("./routes/api/orders"));


/**
 * Express Server Init
 */
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server started on ${PORT}`));

Then in /routes/api/user/user.js you would have something like:

const express = require("express");
const router = express.Router();

router.post("/create", (req, res) => {
try {
    // Create user
} catch (error) {
    console.log(error);
    res.sendStatus(500);
}
});

module.exports = router;

Add and index.js inside /routes/api/user to point at the user file to keep things pretty when importing (otherwise you have to import it like /routes/api/user/user):

const user = require("./user");
module.exports = user;

Importing Single File

Not sure your use case but variables could be a bad naming convention since these values are more like constants than variables. Either way, you create it like this:

const variables = {
varibleOne: "valueOne",
varibleTwo: "valueTwo",
varibleThree: "valueThree",
};


module.exports = variables;

Then wherever you want to import it you can do:

const variables = require("./variables");

and access it like so variables.variableOneand so on.

Importing functions

You can also import different functions, say you need a file called helper.js where these are commonly functions needed all over you app, you could do something like this:

const twoDecimals = (number, decimal = ",") => {
let val = (Math.round(number * 100) / 100).toFixed(2);
return decimal === "." ? val : val.replace(".", decimal);
};

const getRandomInt = (max) => {
return Math.floor(Math.random() * Math.floor(max));
};

module.exports = { twoDecimals, getRandomInt };

Then wherever you needed you can import it by:

const { twoDecimals } = require("helper.js");

Now you have access to your helper functions anywhere.

Upvotes: 0

NathanDoore
NathanDoore

Reputation: 53

You can use Module.Export to export a separate file, and import it into another file using the require statement. Please check here for details:

https://www.geeksforgeeks.org/import-and-export-in-node-js/

Happy Learning :-)

Upvotes: 3

Related Questions