introduction to nodejs and isomorphic javascript
TRANSCRIPT
Node JS and Isomorphic Javascript
Jasper
Outline
• Asynchronous Programming
• Concept of Node JS
• Revolution of Web Framework
• Isomorphic Javascript Web Framework
Asynchronous Programming
Task1 I/O: waiting
Task1: Data Processing
Task2: Data Processing
Task2: I/O: waiting
Asynchronous Programming
Task1 I/O: waitingTask 1: Data ProcessingTask 2: Data Processing
Task 1: Callback
Asynchronous Programming
• Compared with multithreading:
• Cons:
• Service is blocked when encountering heavy CPU computing.
• Pros:
• Don’t need to maintain thread state
• Don’t suffer from context switching
Asynchronous Programming
• HTTP request processed by web server.
!
!
!
!
!
route a request
query a DB
process results
write a log
format response
Asynchronous Programming
• Popular project based on asynchronous programming
• Node JS
• Twisted
• Tornado
Node JS
• Server-side JS runtime based on V8
• Single thread.
• Asynchronous programming - libuv
Node JS
Event Loop
Event Queue Thread Pool
Network
File System
...
CallbackEvents
Node JS
• As a web server on multi-core host
• Run a node JS web server process per core
• A load balancer ahead of them.
Traditional Web Framework
• Model View Controller(MVC)
• Rails/Django/CodeIngiter
!
!
!
!
Controller Model
View
Browser Request Execute Data
Data Returned
Data ReturnedResponse View
Browser Response
Modern Single Page Application
• Front-end MVC framework with pure API server.
!
!
!
!
Web App
Mobile App
API
• Pure Javascript MVC Framework
• Angular
• Ember
• Backbone
• ...
Modern Single Page Application
• Pros:
• Without refresh the page when browsing the page
• Separate pure data from business logic
• Cons:
• SEO
• Performance depend on users’ end devices
• Duplicate logic(URL routing, validation, ...etc.)
Isomorphic Javascript
• A concept of JS web framework that shares Javascript run on both client side and server side.
• Reuse all codes
• Flexible for developer
• Bootstrap initial page via server rendering.
• Font-end rendering/Back-end rendering
Isomorphic Javascript
• Web framework with Isomorphic conecpts
• Meteor - Meteor.com
• Derby
• Rendr - Airbnb
• Even use React + Flux
End