SlideShare a Scribd company logo
1 of 26
Download to read offline
node.js
evented I/O for V8 JavaScript
what is node?
Server-side JavaScript done right.

Runs on V8

An environment for developing high-
performance web services

Evented TCP stack

Not a framework
why node?
Web applications spend most of their time
doing I/O

JavaScript is the language of the web
V8
V8
Google's open source JavaScript engine.

Developed by Lars Bak.

Fast: compiles JavaScript to machine
code.

Implements most of ECMAScript 5.
ECMAScript 5
ECMAScript 5

              Safe prototype extension
Object.defineProperty(Object.prototype, "forEach", {
    value: function (callback) {
        var keys = Object.keys(this);

          for (var i = 0, key; i < keys.length; i++) {
              key = keys[i];
              callback.call(this, key, this[key]);
          }
      }
});
ECMAScript 5

       Access to the hidden prototypes
Object.getPrototypeOf([]) // Array
[].__proto__              // Array
[].__proto__.__proto__    // Object
ECMAScript 5

          Basic prototypal inheritance
var o = Object.create({ foo: 42 });

o.bar = "bah";

Object.keys(o)    // ["bar"]

o.foo             // 42
o.__proto__       // { foo: 42 }
node.js
node.js

     Event-driven programming

Asynchronous I/O

Callbacks
node.js

          Common.js module system
var sys = require("sys");

sys.puts("hello world");
node.js

          Common.js module system
require.paths   // ["./lib", ...]
__dirname       // this dirname
__filename      // this filename
node.js

               Simple HTTP server
var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {
        'Content-Type':'text/plain'
    });
    response.end('Hello Worldn');
}).listen(8000);
Event-driven
programming
setTimeout(function () {
    // Do something after 1 second
}, 1000);
process.nextTick(function () {
    // Do something asynchronously
});
Async error handling
process.addListener('uncaughtException',
                     function (err) {
   // Handle exception
});
Async signal handling
process.addListener('SIGINT', function (err) {
   // Handle Ctrl-C
});
modules
file-system module
require('fs');
modules

                 fs
one-to-one mapping with unix commands

most functions have a synchronous
version
Asynchronous file stat
fs.stat("path/to/file", function (err, res) {
    if (res) {
        // Handle success
    } else {
        // Handle error
    }
});
Synchronous file stat
var res = fs.statSync("path/to/file");

if (res) {
    // Handle success
} else {
    // Handle error
}
http://nodejs.org
@cloudhead
              Alexis Sellier
http://github.com/cloudhead/node-intro

More Related Content

What's hot

20090109 Dsl2cpp Md Workbench
20090109 Dsl2cpp Md Workbench20090109 Dsl2cpp Md Workbench
20090109 Dsl2cpp Md Workbenchazubi
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsNodeXperts
 
Async programming on NET
Async programming on NETAsync programming on NET
Async programming on NETyuyijq
 
Node.js System: The Approach
Node.js System: The ApproachNode.js System: The Approach
Node.js System: The ApproachHaci Murat Yaman
 
20170310 PHP goal pyramid for memorising
20170310 PHP goal pyramid for memorising20170310 PHP goal pyramid for memorising
20170310 PHP goal pyramid for memorisingSharon Liu
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsjacekbecela
 
Azure Durable Funkiness - .NET Oxford June 2018
Azure Durable Funkiness - .NET Oxford June 2018Azure Durable Funkiness - .NET Oxford June 2018
Azure Durable Funkiness - .NET Oxford June 2018Stuart Leeks
 
Node child process
Node child processNode child process
Node child processLearningTech
 
Emscripten, asm.js, and billions of math ops
Emscripten, asm.js, and billions of math opsEmscripten, asm.js, and billions of math ops
Emscripten, asm.js, and billions of math opsLuka Zakrajšek
 
Netty: asynchronous data transfer
Netty: asynchronous data transferNetty: asynchronous data transfer
Netty: asynchronous data transferVictor Cherkassky
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Yoshifumi Kawai
 
Introduction to Vert.x
Introduction to Vert.xIntroduction to Vert.x
Introduction to Vert.xYiguang Hu
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js ModuleFred Chien
 
ReactPHP – reaktor jądrowy w PHP
ReactPHP – reaktor jądrowy w PHPReactPHP – reaktor jądrowy w PHP
ReactPHP – reaktor jądrowy w PHPThe Software House
 

What's hot (20)

20090109 Dsl2cpp Md Workbench
20090109 Dsl2cpp Md Workbench20090109 Dsl2cpp Md Workbench
20090109 Dsl2cpp Md Workbench
 
NodeJs
NodeJsNodeJs
NodeJs
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Async programming on NET
Async programming on NETAsync programming on NET
Async programming on NET
 
Node.js System: The Approach
Node.js System: The ApproachNode.js System: The Approach
Node.js System: The Approach
 
Scalable Web Apps
Scalable Web AppsScalable Web Apps
Scalable Web Apps
 
20170310 PHP goal pyramid for memorising
20170310 PHP goal pyramid for memorising20170310 PHP goal pyramid for memorising
20170310 PHP goal pyramid for memorising
 
Node ppt
Node pptNode ppt
Node ppt
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Azure Durable Funkiness - .NET Oxford June 2018
Azure Durable Funkiness - .NET Oxford June 2018Azure Durable Funkiness - .NET Oxford June 2018
Azure Durable Funkiness - .NET Oxford June 2018
 
Node child process
Node child processNode child process
Node child process
 
Emscripten, asm.js, and billions of math ops
Emscripten, asm.js, and billions of math opsEmscripten, asm.js, and billions of math ops
Emscripten, asm.js, and billions of math ops
 
Netty: asynchronous data transfer
Netty: asynchronous data transferNetty: asynchronous data transfer
Netty: asynchronous data transfer
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
 
Introduction to Vert.x
Introduction to Vert.xIntroduction to Vert.x
Introduction to Vert.x
 
Python, do you even async?
Python, do you even async?Python, do you even async?
Python, do you even async?
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js Module
 
Let's Go-lang
Let's Go-langLet's Go-lang
Let's Go-lang
 
How do event loops work in Python?
How do event loops work in Python?How do event loops work in Python?
How do event loops work in Python?
 
ReactPHP – reaktor jądrowy w PHP
ReactPHP – reaktor jądrowy w PHPReactPHP – reaktor jądrowy w PHP
ReactPHP – reaktor jądrowy w PHP
 

Viewers also liked

Bárdenas reales
Bárdenas realesBárdenas reales
Bárdenas realesAmanda C
 
Reserva de la biosfera urdaibai
Reserva de la biosfera urdaibaiReserva de la biosfera urdaibai
Reserva de la biosfera urdaibaiAmanda C
 
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...Serge Osipov
 
Spencer Ogden Brochure Interactive
Spencer Ogden Brochure InteractiveSpencer Ogden Brochure Interactive
Spencer Ogden Brochure Interactivejpd201
 
Использование платформ iPhone, Android для расширения функционала в классифай...
Использование платформ iPhone, Android для расширения функционала в классифай...Использование платформ iPhone, Android для расширения функционала в классифай...
Использование платформ iPhone, Android для расширения функционала в классифай...Serge Osipov
 
Cabo de Gata - Níjar. Reserva de la biosfera
Cabo de Gata - Níjar. Reserva de la biosferaCabo de Gata - Níjar. Reserva de la biosfera
Cabo de Gata - Níjar. Reserva de la biosferaAmanda C
 
Tlc presentation (1) joseph (1)
Tlc presentation (1) joseph (1)Tlc presentation (1) joseph (1)
Tlc presentation (1) joseph (1)Irena Balko
 
Developing Mobile Apps, Lecture 5
Developing Mobile Apps, Lecture 5Developing Mobile Apps, Lecture 5
Developing Mobile Apps, Lecture 5fpatton
 
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...Serge Osipov
 
H2 Economics - Costs and Production Lecture 1
H2 Economics - Costs and Production Lecture 1H2 Economics - Costs and Production Lecture 1
H2 Economics - Costs and Production Lecture 1Dixon Ho
 
Debugging webOS applications
Debugging webOS applicationsDebugging webOS applications
Debugging webOS applicationsfpatton
 
Catedral de toledo: Análisis
Catedral de toledo: AnálisisCatedral de toledo: Análisis
Catedral de toledo: AnálisisAmanda C
 
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...Serge Osipov
 
Investigación educativa iii
Investigación educativa iiiInvestigación educativa iii
Investigación educativa iiigilberth82
 

Viewers also liked (17)

Bárdenas reales
Bárdenas realesBárdenas reales
Bárdenas reales
 
Hu 500
Hu 500Hu 500
Hu 500
 
Reserva de la biosfera urdaibai
Reserva de la biosfera urdaibaiReserva de la biosfera urdaibai
Reserva de la biosfera urdaibai
 
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...
Сервисы объявлений - восходящая звезда Рунета? (Сергей Осипов, Деловой Мир Он...
 
Spencer Ogden Brochure Interactive
Spencer Ogden Brochure InteractiveSpencer Ogden Brochure Interactive
Spencer Ogden Brochure Interactive
 
Babia
BabiaBabia
Babia
 
Использование платформ iPhone, Android для расширения функционала в классифай...
Использование платформ iPhone, Android для расширения функционала в классифай...Использование платформ iPhone, Android для расширения функционала в классифай...
Использование платформ iPhone, Android для расширения функционала в классифай...
 
Cabo de Gata - Níjar. Reserva de la biosfera
Cabo de Gata - Níjar. Reserva de la biosferaCabo de Gata - Níjar. Reserva de la biosfera
Cabo de Gata - Níjar. Reserva de la biosfera
 
Tlc presentation (1) joseph (1)
Tlc presentation (1) joseph (1)Tlc presentation (1) joseph (1)
Tlc presentation (1) joseph (1)
 
Developing Mobile Apps, Lecture 5
Developing Mobile Apps, Lecture 5Developing Mobile Apps, Lecture 5
Developing Mobile Apps, Lecture 5
 
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...
Классифайды оффлайн-онлайн (Андрей Клейменов, Тандем), РИФ+КИБ 2010, секция "...
 
H2 Economics - Costs and Production Lecture 1
H2 Economics - Costs and Production Lecture 1H2 Economics - Costs and Production Lecture 1
H2 Economics - Costs and Production Lecture 1
 
Debugging webOS applications
Debugging webOS applicationsDebugging webOS applications
Debugging webOS applications
 
State of kentucky
State of kentuckyState of kentucky
State of kentucky
 
Catedral de toledo: Análisis
Catedral de toledo: AnálisisCatedral de toledo: Análisis
Catedral de toledo: Análisis
 
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...
Как заработать на автомобильном классифайде? (Роман Цупер, Автомобили и Цены)...
 
Investigación educativa iii
Investigación educativa iiiInvestigación educativa iii
Investigación educativa iii
 

Similar to Node intro

soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
NodeJs
NodeJsNodeJs
NodeJsdizabl
 
Node js
Node jsNode js
Node jshazzaz
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 
Node js introduction
Node js introductionNode js introduction
Node js introductionAlex Su
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing UpDavid Padbury
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.pptWalaSidhom1
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop  - Sela SDP 2015Node.js Workshop  - Sela SDP 2015
Node.js Workshop - Sela SDP 2015Nir Noy
 
Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio
 
Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Dinh Pham
 
Introduction to ES6 with Tommy Cresine
Introduction to ES6 with Tommy CresineIntroduction to ES6 with Tommy Cresine
Introduction to ES6 with Tommy CresineMovel
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsRichard Lee
 

Similar to Node intro (20)

soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
NodeJS
NodeJSNodeJS
NodeJS
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
NodeJs
NodeJsNodeJs
NodeJs
 
Node js
Node jsNode js
Node js
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
node.js dao
node.js daonode.js dao
node.js dao
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
 
Node.js
Node.jsNode.js
Node.js
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop  - Sela SDP 2015Node.js Workshop  - Sela SDP 2015
Node.js Workshop - Sela SDP 2015
 
Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0
 
Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?
 
Introduction to ES6 with Tommy Cresine
Introduction to ES6 with Tommy CresineIntroduction to ES6 with Tommy Cresine
Introduction to ES6 with Tommy Cresine
 
Node.js quick intro
Node.js quick introNode.js quick intro
Node.js quick intro
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 

Node intro