O MNIE
mail: piotr.tarasiuk@softwarehut.com
github: https://github.com/piotar
linkedin: https://linkedin.com/in/piotr-tarasiuk
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?
- Asynchroniczne wejście/wyjście (non-blocking I/O model)
- NodeJS wykorzystuje programowanie zdarzeniowe (event driven)
- NodeJS package ecosystem (npm)
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"
}




nodejs-basic
By Piotr Tarasiuk
nodejs-basic
- 321