NodeJS – C'est quoi ? – Hello world



NodeJS – C'est quoi ? – Hello world

0 0


nodejs-presentation


On Github xtuc / nodejs-presentation

NodeJS

C'est quoi ?

  • C’est du JavaScript
  • Moteur V8 de Google Chrome. Écrit en C/C++
  • I/O asynchrones
  • Une énorme communauté / ecosystème
  • Multi-plateforme (Linux, Mac, Windows, …)

Pourquoi ?

  • Application web « 2.0 »
  • Backend pour application mobile (API)
  • Système de notifications
  • Serveur de chat
  • Jeux en ligne
  • IOT (objets connectés) …

L'ecosystème

  • ~5M téléchargements/jour
  • +220k modules
  • 356 modules/jour (~3x que Packagist)

Qui l'utilise ?

IBM, Microsoft, Netflix, Yahoo, eBay, GoDaddy, Heroku, PayPal, Trello, Pascal, …

Qui l'héberge ?

Un grand nombre de PaaS

Serveur dédié (gestion simple)

Plateform as a service

Conseil : petits modules

Philosophie Unix

Faire une seule chose et la faire bien

Certains modules npm tiennent en une fonction

Architecture microservices

Techniquement

  • Ecrire et appeler des modules en C/C++
  • Votre code est mono thread (contrairement aux IOs)
  • Une event loop

Event loop

Hello world

console.log("Hello world");
$ node hello.js
> Hello world

CommonJS

Chaque fichier est un module isolé

Dépendances explicites synchrones avec

require("foo")

Enfin du code structuré, modulaire, découpé …

librairie standard

Assertion Testing, Buffer, C/C++ Addons, Child Processes, Cluster, Console, Crypto, Debugger, DNS, Domain, Errors, Events, File System, Globals, HTTP, HTTPS, Modules, Net, OS, Path, Process, Punycode, Query Strings, Readline, REPL, Stream, String Decoder, Timers, TLS/SSL, TTY, UDP/Datagram, URL, Utilities, V8, VM, ZLIB C'est très bien documenté

Node debugger

NodeJS vs. PHP

web server with "hello world"

Des bases de données

des frameworks / outils

Plein d'outils/frameworkd

Lire un fichier

var fs = require("fs");
var data = fs.readFileSync("foo.txt", "utf8");
console.log(data);
fs.readFile("foo.txt", "utf8", function(err, data) {
    if (err) throw err;

    console.log(data);
});

Ecrire un fichier

var fs = require("fs");
var done = fs.writeFileSync("foo.txt", "bar");
if(done) console.log("Done");
fs.writeFile("foo.txt", "bar", function(err) {
    if (err) throw err;

    console.log("Done");
});

OS

var os = require("os");

os.networkInterfaces()
os.platform() // darwin
os.cpus().length // 64
Plateforms : 'darwin', 'freebsd', 'linux', 'sunos' or 'win32'

Streams

var fs = require("fs");

var stream = fs.createReadStream("/dev/urandom");

stream.on("data", function(chunk) {
    console.log("got %d bytes of data", chunk.length);
});

stream.on("end", function() {
    console.log("there will be no more data.");
});
got 65536 bytes of data
got 65536 bytes of data
got 65536 bytes of data
got 65536 bytes of data
…
# there will be no more data

Process

process.exit(0)
process.env
process.memoryUsage()
console.log("1");

process.nextTick(function() {
    console.log("2");
});

console.log("3");

// 1
// 3
// 2

Hello world (express)

var express = require('express');
var app = express();

app.get('/', function (req, res) {
    res.send('Hello World!');
});

app.listen(8080);

Strasbourg Node.js

  • 3 meetups
  • 3 co-organisateurs (professionnels)
  • 130 membres

On a un Slack !

NodeSchool

  • 40 tutoriels gratuits
  • 152 organisations (3 en France)

Prochain meetup

Mardi 8 mars à 19h
  • 1) Profiling CPU de votre application Jean-Sébastien
  • 2) L'Immuabilité et ses bons usages Sven
  • 3) Session questions / réponses

Questions ?

NodeJS