O MNIE

PIOTR TARASIUK

Zaliczenie (?)

Czym jest NodeJS?

NodeJS

  • Jest środowiskiem uruchomieniowym zaprojektowanym do tworzenia wysoce skalowalnych aplikacji, napisanych w języku JavaScript poza kontekstem przeglądarki.
     
  • NodeJS jak również interpreter JavaScript w naszej przeglądarce bazują na tym samym silniku zwanym V8 JavaScript Runtime Engine.

V8 JAVASCRIPT RUNTIME ENGINE

  • otwarty kod źródłowy
  • napisany w języku c++
  • możliwość rozszerzenia silnika przez napisane modułu w c++
  • kompiluje kod JavaScript do kodu maszynowego

CZYM JEST KOD MASZYNOWY?

  • Jest to zestaw rozkazów procesora w którym zapis programu wyrażony jest w postaci liczb binarnych stanowiących rozkazy oraz ich argumenty
  • Kod maszynowy to postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor.

NA CO POZWALA NAM NODEJS?

  • NodeJS pozwala nam na mainipulowanie systemem plików, stworzenie własnego serwera, łączenie się z bazami danych, obsługą wejścia/wyjścia, itp.
  • JavaScript po stronie przegladarki daje jedynie możliwość manipulowania danymi w naszym oknie(window).

NODEJS VS JS W PRZEGLĄDARCE

global < = > window
process < = > document

DLACZEGO NODEJS JEST TAK POPULARNY?

CZYM JEST WEJŚCIE/WYJŚCIE(I/O)?

  • Jest czymś co każda aplikacja wykonuje cały czas, np. operacje na bazie danych, wysyłanie i odbieranie żądań HTTP, operację na systemie plików.
  • Trzeba pamiętać, operacje I/O wymagają czasu!

SYNCHRONICZNE VS ASYNCHRONICZNE

const getMovie = require('./sync.service');

const movie1 = getMovie('Matrix');
console.log(movie1);

const movie2 = getMovie('007');
console.log(movie2);

console.log('2 + 5 = ', 2 + 5);
const getMovie = require('./async.service');

getMovie('Matrix', movie1 => {
    console.log(movie1);
});

getMovie('007', movie2 => {
    console.log(movie2);
});

console.log('2 + 5 = ', 2 + 5);
C:\nodejs>node sync.js
{ title: 'The Matrix', year: 1999 }
{ title: '007 James Bond, Goldfinger', year: 1964 }
2 + 5 =  7

C:\nodejs>node async.js
2 + 5 =  7
{ title: 'The Matrix', year: 1999 }
{ title: '007 James Bond, Goldfinger', year: 1964 }

CZY JEST NPMJS?

  • Node package manager, domyślny manager pakietów dla środowiska NodeJS.
  • Npm jest aplikacją wiersza poleceń, za pomocą której można instalować aplikacje dostępne w repozytorium Npm.
  • Ale nie tylko... 

PODSTAWY NODEJS

REQUIRE

Funkcja wbudowana w NodeJS, pozwala nam na wczytanie zewnętrznego pliku/modułu.

// własny moduł
const user = require('./user'); // ścieżka relatywna

// wbudowany moduł
const fs = require('fs'); // ścieżka absolutna

// zewnętrzny moduł
const _ = require('lodash'); // ścieżka absolutna

module.exports

Pozwala na wyeksportowanie zmienncy/funkcji.

module.exports = 'Ala ma kota';
// lub
module.exports.add = (a, b) => a + b;
module.exports.sub = (a, b) => a - b;
// lub
module.exports = {
  add: (a, b) => a + b,
  sub: (a, b) => a - b,
};
// lub
exports.add = (a, b) => a + b;
exports.sub = (a, b) => a - b;
// ale nie tak!
exports = {
  add: (a, b) => a + b,
  sub: (a, b) => a - b,
};
// ale nie tak!
exports = 'Ala ma kota';

MODUŁ (module)

  • wbudowany (fs, os, itd...)
  • własny
  • zewnętrzny (lokalny/globalny)

MODUŁY WBUDOWANE

console.log('start app');

const os = require('os');
const username = os.userInfo().username;
console.log(username);

const fs = require('fs');
fs.writeFileSync('abc.txt', username);

WŁASNE MODUŁY

// app.js
console.log('start app');

const user = require('./user');

console.log(user.firstName);
console.log(user.lastName);
// user.js

module.exports = {
  firstName: 'Jan',
  lastName: 'Nowak',
};

module.exports.city = 'Bialystok';

ZEWNĘTRZNE MODUŁY

// npm init
// npm install lodash

console.log('start app');

const _ = require('lodash');

console.log(_.isString('Ala ma kota'));
console.log(_.isString(123));

NPM

{
  "name": "abc",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
Made with Slides.com