Preview:
Node.js

Is a Javascript Runtime built on google's open source V8 javascript engine.
Executes js code outside of the browser.

Javascript on the Server:
Perfect conditions for using node.js as a web-server
We can use js on the server-side of web development
build fast, highly scalable network applications (back end)

Node.js pros:

perfect for building fast and scalable data-intensive apps.
javascript across the entire stack, front and back end.
npm: huge library of open source packages
very active

use for:
api with database
data streaming (youtube)
real time chat application
server-side web application

Modules

----------Filessystem----------

//reading and writing to files
const fs = require('fs');

//synchronous way of file reading
//takes filepath and char encoding param
fs.readFileSync('./txt/input.txt', 'utf-8');
console.log(textIn);

//synchronous way of file writing
const textOut = `This is what we know about avocado: ${textIn}.`
//takes output filepath and content to write
fs.writeFileSync('./txt/output.txt', textOut)


//asynchronous way of file reading

//Non-blocking file execution
fs.readFile('input.txt', 'utf-8', (err, data) => {
  console.log(data);
});
console.log('Reading file...');

callback get's called first, starts reading file in background and immediately moves on to next statement, printing console.log.


----------Server----------

const http = require('http');

//creating server, callback will be executed each time a new request hits server
const server = http.createServer((req, res) => {
  res.end('Hello from the server!');
});

//listening for incoming requests
server.listen(8000, '127.0.0.1' () => {
  console.log('Listening to request on port 8000');
});


// ROUTING

const url = require('url');

//creating server, callback will be executed each time a new request hits server
const server = http.createServer((req, res) => {
    // ROUTING
    const pathName = req.url;

    if(pathName === '/' || pathName === '/overview') {
        res.end('This is the OVERVIEW');
    } else if (pathName === '/product') {
        res.end('This is the PRODUCT');
    } else {
        //sending a html header element to the browser
        res.writeHead(404, {
            'Content-type': 'text/html',
            'my-own-header': 'hello-world'
        });
        res.end('<h1>Page not found!</h1>');
    }
});


----------NPM----------

Node Package Manager

//USEFUL DEPENDENCIES
slugify //used to control url params
nodemon //restarts server automatically after code changes
//specify npm scripts:
{  "scripts": {
    "start": "nodemon index.js"
  },}

Used to manage third-party packages in projects.

npm init //creates package.json for projects

npm i //installs locally, only works for specific project

npm i --global //installing dependencies globally (across projects)

npm i *packageName* //installing dependencies for project

npm i *packageName* --save-dev //dependencies for development purposes

npm run start //run npm scripts

npm outdated //check for outdated npm packages

npm i *packageName* @1.0.0 //install a specific version of a package

"dependencies": {
    "slugify": "^1.6.6" //only accepts minor and patch releases
  }

"dependencies": {
    "slugify": "~1.6.6" //only accepts patch releases
  }

"dependencies": {
    "slugify": "*1.6.6" //accepts all update realeases, might create conflicts
  }

npm uninstall *packageName* //uninstall packages

npm install //installs all dependencies in package.json file


























downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter