---
# System prepended metadata

title: 02 Core NodeJS
tags: [BED, School, Notes, DISM]

---

---
title: '02 Core NodeJS'
disqus: hackmd
---

02 Core NodeJS
===

<style>
img{
/*     border: 2px solid red; */
    margin-left: auto;
    margin-right: auto;
    width: 90%;
    display: block;
}
</style>


## Table of Contents

[TOC]

Nodejs File-Based Module System
---
- nodejs follows commonjs module specification
    - ea file is own module
    - to export current module, use `module.exports`
    - to import module, use `require()`
        - file referenced with relative path

```javascript=
// in formula.js
multiplyFunct = (x, y) => x * y;
module.exports=multiplyFunct

// in another file
var mulFn = require('./formula');
console.log(mulFn(2,3));

// export multiple files
module.exports = {
    funcName: func,
    funcName2: func2
}

// import specific modules from export
const {funcName, funcName2} from './formula';
```

Node Paradigms
---
- npm - huge collection of libs and modules
- `npm init` to create new `package.json` file
    - `package.json` keeps track of the packages node projs use
    - allows us to avoid checking in node_modules into our version control system (Eg. git) if used
    - run `npm install` if `node_modules` folder missing/corrupted to reinstall required packages
- `require()` to import packages
- export packages - `module.exports`

```javascript=
const john = {
  name: 'john',
  age: 65,
};

module.exports = john;
```

### Notes
- general rule of thumb to use async ver of func if it exists
    - because sync funcs that perform async operations prevent nodejs from performing other tasks while it waits for op to complete



###### tags: `BED` `DISM` `School` `Notes`