---
title: "Profound Pro Tip: 4 Fundamental Concepts of Using Profound.js and Node.js"
description: Profound.js has 4 fundamental concepts that can have an immediate effect on your application modernization efforts for your IBM i.
---

[iModernize - IBM i Modernization and Development Blog by Profound Logic Software](https://blog.profoundlogic.com)

# [Profound Pro Tip: 4 Fundamental Concepts of Using Profound.js and Node.js](https://blog.profoundlogic.com/profound-pro-tips-4-fundamental-concepts-of-profoundjs-and-nodjs)

 Written by [Tim Losee](https://blog.profoundlogic.com/author/tim-losee) | Oct 3, 2018 5:23:17 PM

Profound Pro Tips is a blog series focused on issues that our support team receives and questions our **Profound Logic** customers have. Don't see your question/concern in Profound Pro Tips? Please feel free to [**contact our team**](http://www.profoundlogic.com/contact) or leave us a comment below. 

**Today’s Topic: Fundamental Concepts of Using Profound.js and Node.js**

If you haven't heard by now, [**Profound.js**](http://www.profoundlogic.com/profoundjs) is Profound Logic's solution for Enterprise business application development using **Node.js**. It brings together client-side and server-side development technologies, allowing developers to build database-driven business applications quicker than ever before.

By utilizing Node.js, **Profound.js** can extend your applications to open-source technologies, opening your business up to endless possibilities. Below are the[**4 fundamental concepts of Profound.js:**](https://www.mcpressonline.com/programming/rpg/scary-rpg-developer-habits)

## **1. Creating Node.js Modules as ILE Programs**

Creating Node.js modules that act like ILE programs is one of the main purposes of **Profound.js**. Using **Profound.js,** you can call these modules directly from your existing applications. These programs can have either in-put parameters or out-put parameters that can be passed by reference. 

<https://blog.profoundlogic.com/hubfs/Capture1.jpg>**(Figure 1)**

## **2. Passing Parameters In and Out**

After creating a Node.js module that can be called from your existing application, you can then pass parameters in and out of those modules. A proxy program is typically used to help pass information along to Node.js (see Figure 2).

<https://blog.profoundlogic.com/hubfs/Capture2.jpg>**(Figure 2)**

## **3. Using NPM Packages**

**Profound.js** allows you the use of NPM packages to connect to the outside world. NPM is a package manager for the JavaScript programming language and is the default package manager for the JavaScript runtime environment Node.js. There are hundreds of thousands of packages that can do almost anything you may require including connecting to a sequel server data base (Figure 3). The possibilities are endless!

<https://blog.profoundlogic.com/hubfs/Capture3.jpg>**(Figure 3)**

## **4. The Use of Fibers**

The documentation for most NPM packages show that the data comes back into a *"call back,"* which is a separate function that receives the output. These asynchronous *"call backs"* work very well within most scenarios, including event driven applications, but aren't great for transaction business applications. Fibers allow you to get rid of the *"call backs"* and turn those asynchronous API into more of an easy to call code.

<https://blog.profoundlogic.com/hubfs/Capture4.jpg>**(Figure 4)**

Below you will see a working example of a business application that uses a simple CL program that prints an invoice and how **Profound.js** can dramatically change how you use the data with these 4 fundamental concepts:

[View full post](https://blog.profoundlogic.com/profound-pro-tips-4-fundamental-concepts-of-profoundjs-and-nodjs)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Tim Losee"
  },
  "dateModified" : "2018-10-03T17:38:18.011Z",
  "datePublished" : "2018-10-03T17:23:17Z",
  "headline" : "Profound Pro Tip: 4 Fundamental Concepts of Using Profound.js and Node.js",
  "image" : {
    "@type" : "ImageObject",
    "height" : 601,
    "url" : "https://cdn2.hubspot.net/hubfs/1708946/Capture3.jpg",
    "width" : 1209
  },
  "mainEntityOfPage" : "https://blog.profoundlogic.com/profound-pro-tips-4-fundamental-concepts-of-profoundjs-and-nodjs",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "iModernize - The Profound Logic Software Blog"
  }
}
```