Node.js – Na čo je vhodný? – npm - Node Packaged Modules



Node.js – Na čo je vhodný? – npm - Node Packaged Modules

0 0


node.js-pads

Presentation about node.js and its ecosystem

On Github miroRucka / node.js-pads

by Miroslav Rúčka

Obsah

  • Node.js
  • Použitie
  • Produkcia, kto to už používa
  • node.js ecosystem
  • npm
  • grunt
  • bower
  • príklady

Node.js

  • platforma postavená na Google V8 prostredí (Google chrome)
  • tenká vrstva C++
  • eventmi riadený model
  • "non-blocking" I/O model
  • jedno vlákno v event loop-e
event-driven - arch. zalozena na reagovani na event - v tomto pripade si mozme predstavit ako event napriklad request od pouzivatela, tento request sa potom spracovava v callbacku non-blocking I/O operácie ako prístup k db, alebo zápis na fs neblokujú vlákno, ale zaregistrujú callback a ten sa spracuje až vtedy ked zadaná operácia skončí

blocking vs non-blocking

adapted from code school

blocking vs non-blocking

adapted from code school

Event loop

http://ageeknotes.com/

Na čo je vhodný?

  • REST Api
  • SPA
  • Real time app (RabbitMQ)

Na čo je nevhodný?

  • spracovanie obrazu, zvuku
  • šifrovanie
  • CPU náročné úlohy

Použitie v produkcii?

LinkedIn

  • Better performance, Node.js being up to 20x faster than Rails for certain scenarios
  • Using only 3 servers instead of 30, leaving room for a 10x traffic growth
  • Front-end JavaScript engineers could be used for back-end code, and the two teams were actually merged into on

LinkedIn

PayPal

  • Double the requests per second vs. the Java application.
  • 35% decrease in the average response time

PayPal

Node.js ecosystém

  • Komunita, (blogy, github, stackoverflow)
  • npm repo
  • Platform as a service (PaaS) (appfog, nodejistu, heroku atď)
  • grunt
  • bower
  • ...

npm - Node Packaged Modules

online repo pre node.js projekty (moduly) https://www.npmjs.org/ nástroj pre príkazový riadok pre interakciu s modulom / projektom

npm - package.json

package.json je descriptor, ktorý musí byť pri každom module / projekte.
{
    "name": "reveal.js",
    "version": "2.6.2",
    "dependencies": {},
    "devDependencies": {}
}

npm - Node Packaged Modules

Grunt

The JavaScript Task Runner
  • build app do produkcie
  • sledovanie zmien a spúšťanie úloh po zmene
  • využíva rôzne pluginy z npm
npm install -g grunt-cli

Bower

Bower is a package manager for the web
npm install -g bower
{
    "name": "my-project",
    "version": "1.0.0",
    "main": "path/to/main.css",
    "
    "dependencies": {
    },
    "devDependencies": {
    }
}

Za hrsť príkladov

Záver

Zdroje

  • https://www.codeschool.com/
  • http://ageeknotes.com/