Build App with Nodejs - YWC Workshop
-
Upload
sarunyhot-suwannachoti -
Category
Technology
-
view
231 -
download
1
Transcript of Build App with Nodejs - YWC Workshop
What is Node.js• Created by Ryan Dahl in 2009
• Server-side JavaScript
• Uses V8 is an open source JavaScript engine developed by Google. Its
• written in C++ and is used in Google Chrome Browser
• Event-driven with Non-blocking I/O
The Essence of Node• JavaScript on the Server
• More than server-side JavaScript
• Fabulous framework
• Asynchronous programming
• Module-driven development
It’s is JavaScript
• Easy to learn
• Lets you unify your client/server logic
• Productivity
• Already in the Enterprise (Paypal, Netflix, Walmart, IBM)
More than server-side JavaScript
• Web server
• Robot controller (tessel.io)
• Command line application
• Proxy server
• Music machine
• Desktop application tooling: NW.js, Electron
Module-driven development
• Node Package Manager (NPM)
• 250,000++ total packages
• 160,000,000 downloads per day
• Simplicity
• Decoupled and reusable coding
Module-driven development
• npm focused on module-driven development
• ES6 Modules
• Module-driven development for the browser
• bower install moment —save
• npm install moment —save
Desktop Application(torrent)
Desktop Application (editor)
Game Dev Tycoon
Fabulous Framework• Express
• Restify (for building REST API)
• Hapi (configuration-centric framework)
• Sails (fast production-ready)
• Meteor (realtime application)
Asynchronous programming
5s0s 10s
BLOCKING
5s0s 10s
NON-BLOCKING
Create node module
What is Node made of?
Event Loop
V8 JavaScript Engine• V8 is Google's open source JavaScript engine
• V8 implements ECMAScript as specified in ECMA-262
• V8 is written in C++ and is used in Google Chrome, the open source browser from Google
• V8 can run standalone, or can be embedded into any C++ application
Create Event Emitter
Stream and Buffer
Stream
• A sequence of data made available over time
Buffer
• A temporary holding spot for data being moved from one place to another
Hello WorldBuffer Buffer
StreamLorem ipsum dolor sit
amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute
irure dolor in
lowercase.txt
LOREM IPSUM DOLOR SIT AMET,
CONSECTETUR ADIPISICING ELIT, SED DO EIUSMOD TEMPOR
INCIDIDUNT UT LABORE ET DOLORE MAGNA ALIQUA. UT ENIM AD MINIM VENIAM, QUIS
NOSTRUD EXERCITATION
ULLAMCO LABORIS NISI
uppercase.txt
stream
StreamProcess
Stream
roL e m
StreamProcess
Stream
Lorembuffer
LOREMbuffer
StreamProcess
Stream
ipsumbuffer
IPSUMbuffer
StreamProcess
Stream
LOREM IPSUM
StreamLOREM IPSUM DOLOR
SIT AMET, CONSECTETUR
ADIPISICING ELIT, SED DO EIUSMOD TEMPOR
INCIDIDUNT UT LABORE ET DOLORE MAGNA ALIQUA. UT ENIM AD MINIM VENIAM, QUIS
NOSTRUD EXERCITATION
ULLAMCO LABORIS NISI
uppercase.txt
What is pipe
• Connecting two streams by writing to one stream
• Let you easily read data from a source and pipe it to a destination
Another Stream
PipeProcess
Readable Streampipe
Process
Hello
Writeable Stream
Write Stream
Build App with Node
Browser
Request
Response
WebServer
Browser
Request
Response
WebServer
HTTP
HTTP
Browser
Request
Response
WebServer
HTTP
HTTP
Javascript
Browser
Request
Response
WebServer
HTTP
HTTP
Javascript
Javascript
What’s JavaScript on Server-side
• Read and write file
• Connect with databases
• Build web server
• Asynchronous task queue/job queue
Create http server