SlideShare a Scribd company logo
1 of 62
Download to read offline
Jackson Tian / 田永强 @朴灵 at SAP Mobile Web

BROWSER VS. NODE
Agenda

 Browser
 Node
 Browser Vs. Node
 Browser? Or Node?




                      2
Don't Reinvent the Wheel




                           3
Question?

 是否Node在重复发明轮子




                  4
Browsers




           5
Case: DOM events

$(selector).click(function (ev) {
// TODO
})
.mouseover(function (ev) {
// TODO
})
.hover(function(ev) {
// TODO
});



                                    6
Case: 图片加载

var img = new Image();
img.onload = function(){
   // TODO
};
img.onerror = function () {
   // TODO
}
img.src = url;




                              8
9
Case: 动态脚本加载

var script = document.createElement(”script”);
script.type= “text/javascript”;
script.onload = function () {
   // TODO
};
script.src = url;
document.body.appendChild(script);




                                                 10
Case: Ajax

$.ajax(url, {
  data: “foo=bar”,
  success: function () {
     // TODO
    },
  error: function () {
     // TODO
  }
});



                           12
Case: Web Worker

Script.js                               worker.js

var worker = new Worker(“worker.js”);    // TODO
worker.onmessage = function (event) {   self.onmessage = function (evnt) {
    // TODO                                 // TODO
};                                         self.postMessage(“I am World!”);
Worker.postMessage(“Hello!”);           }
 // TODO                                 // TODO




                                                                              14
Case: Cross Document Message

Window A                              Window B

document.addEventListener('message'   document.addEventListener('messa
,function(event){                     ge',function(event){
   // TODO                               // TODO
},false);                             },false);
Iframe.postMessage(“I am Window       Iframe.postMessage(“I am Window
A.”);                                 B.”);




                                                                         16
17
Case: WebSocket
Browser                                ServerSide

var ws = new WebSocket('ws://ip');    // TODO
ws.onopen = function(e){             var ws = require("websocket-server");
   // TODO                           var server = ws.createServer();
};                                   server.addListener("connection",
ws.onclose = function(e){            function(conn){
   // TODO                                 conn.addListener("message",
};                                   function(msg){
ws.onerror = function(e){                     server.broadcast(msg);
   // TODO                                     // TODO
};                                        });
ws.onmessage = function(e){          });
   // TODO                           //监听一个websocket地址
};                                   server.listen(8080,"127.0.0.1");
ws.send(“message”);                   // TODO
JavaScript in Browser

 Event Driven
 Messages
 Callbacks
 Asynchronous I/O
 Single/Multi Threads




                         20
Event

 观察者模式
 事件切面/AOP
 JavaScript执行背后的多线程
 消息编程模型
  侦听事件
  回调函数
  触发事件



                       21
Douglas Crockford说

 我喜欢浏览器模型的一点就是它只提供给
  我们一个线程。有些人对此怨声载道——如
  果锁住了线程,那浏览器也被锁住了,因
  此不能这么干。现在很多人都在呼吁把线
  程加入到JavaScript中,我们一直在抵制。
  我很高兴我们抵制住了。
 ——来自《编程人生》92页



                             22
Douglas Crockford说

 浏览器所提供的基于事件的模型确实很不
  错。唯一会导致崩溃的地方就是当某些进
  程需要花费很长时间的时候。
 我很欣赏Google在Gears中所采取的做法,
  他们使用了一个完全独立的进程,你可以
  把程序发给这个进程去执行。一旦执行完
  毕,它会把结果传回来,而结果的传回是
  通过事件实现的,这真是个漂亮的模型。
 ——来自《编程人生》92页
                             23
Evented I/O for V8 JavaScript




                                24
Case: HTTP Server

var http = require('http');
http.createServer( function (request, response) {
 request.on("data", function () {
   // TODO
 });
 request.on(“end”, function() {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello Worldn');
 });
}).listen(1337, "127.0.0.1");
console.log('Running!');

                                                               25
26
curl http://npmjs.org/install.sh | sh




                      Case: HTTP Request

                      var http = require('http');
                      var request = http.request(options, function(response) {
                        var data = '';
                        response.on('data',function(chunk){
                           data += chunk;
                        }).on('end', function (){
                           console.log(data);
                           context.renderJSON(JSON.parse(data));
                        });
                      });
                      request.end(“key=value”);

                                                                                 27
Case: File exist?

path.exists('/etc/passwd', function (exists) {
  util.debug(exists ? "it's there" : "no passwd!");
});




                                                      29
Case: Read file

fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});




                                                    30
Case: Read file by Stream

var frs = fs.createReadStream(‘file’);
frs.on("fd", function () {
});
frs.on("data", function (data) {
});
frs.on("end", function () {
});
frs.on("error", function (ex) {
});
frs.on("close", function () {
});

                                         31
JavaScript in Node

 Event Driven
 Messages
 Callbacks
 Asynchronous I/O
 Single/Multi Threads




                         33
Event

 观察者模式
 事件切面/AOP
 JavaScript执行背后的多线程
 消息编程模型
  侦听事件
  回调函数
  触发事件



                       34
Browser Vs. Node




                   35
Keywords

 Event
 I/O
 V8
 JavaScript




               36
Callbacks & Async

 2010.12.28的D2论坛上见到了@老赵的
  Jscex。地址:
  http://v.youku.com/v_show/id_XMjMyNzk0O
  DA0.html
 让人惊艳。原来JavaScript可以这样来解决y
  异步和回调的问题
 我崇拜得五体投地



                                            37
Callbacks & Async

 次年的春天开始研究Node。
 对比Browser中的JavaScript。
 我才知道Callbacks和Async才是JavaScript的
  特色。
 事件模型才是JavaScript的特性
 但这一切毫不改变我对@老赵的崇拜




                                     38
打酱油场景 in JavaScript

 老妈在做菜
 发现没酱油了
 叫孩子出门买酱油
 继续做下一道菜
 ……
 孩子回来了
 买到了酱油?
 完成之前的菜
                      39
打酱油场景 in PHP

 老妈在做菜
 发现没酱油了
 叫孩子出门买酱油
 停下一切等待孩子回来
 孩子回来了
 买到了酱油?
 完成之前的菜
 继续做下一道菜
               40
JavaScript中的线程

 JS能隐式地启动线程,但是无法探知线程
 细节
  不用Care多线程的烦恼
 JS与线程之间通过事件进行交互
 JS与线程之间通过消息进行数据传递




                        41
Node没有改变JavaScript


Node仅仅是释放了JavaScript所具有的能力


Unlocking the Power of JavaScript




                                    42
Node的语法和API都毫无变化

setTimeout(callback, delay, [arg], [...]);
clearTimeout(timeoutId);
setInterval(callback, delay, [arg], [...]);
clearInterval(intervalId);

console.log();
console.info();
console.warn();
console.error();
console.dir(obj);
console.time(label);
……
                                              43
Node or Browser?




                   44
Browser Architecture




                       45
Node Architecture




                    46
Node是Browser的延续

 Node没有改变JavaScript的语法
 Node没有改变JavaScript的机制
  事件模型
  线程消息
 Node没有改变JavaScript的架构
  比较Node与Chrome,极其相似




                          47
Node与UI?

 假如:
  Node可以处理UI?
  移除掉Browser中的UI部分的功能?
 那么:
  Node就是Browser
  Browser就是Node




                          48
Node其实是运行在服务端的Browser




                        49
Node比浏览器的优势

 数据库
  Browser
   WebDataBase
     var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024
      * 1024);
  Node
   MySQL
   MongoDB
   PostgreSQL


                                                                 50
Node比浏览器的优势

 同源策略限制
  Browser
     JSONP
     Flash Proxy
     Access Control
     ……
  Node
   对此问题免疫



                       51
Node比浏览器的优势

 WebSocket
   Browser
    在浏览器中实现WebSocket走了多久?
    兼容性?
    支持程度?
   Node
    Server端的实现与Client端的实现,Effort之比?
    看起来Node天生就是用于支持它的
    Node作为WebSocket的客户端?

                                       52
Node比浏览器的优势

 Node可以通过Addons的形式通过C/C++带
  来比浏览器更多的便利
 当Node遇见Webkit?(这是现实,不是梦)
  共享到HTML5时代的所有benefits
  弥补了UI的缺陷时,Node就是Browser
  Node是更Powerful的Browser




                              53
Node + Webkit = NodeBrowser?




      Node + Webkit >> Browser
                                 54
下一代的应用




         55
NodeBrowser

 在传统App模式中不失其优势
 在嵌入等领域更具有其广泛的应用
  在机顶盒中已经应用广泛




                    56
57
下一代的应用

 Node > Browser
 享受到了Web革命带来的所有成果
 改变传统Native程序的缺陷
 没有Browser带来的负面影响
   神马叫浏览器兼容性?
   B/S模式 + 定制native feature
 事件模型真的很简单,很简单,很简单


                               58
Answer 1

 Node重复发明了轮子
  语法
   完全没有改动JavaScript的语法
  事件机制
   与浏览器中的事件机制如出一辙
  功能
   除了UI的显示外,Node能做JavaScript在浏览器中
    的事情
   甚至更多


                                     59
Answer 2

 Node并未重复发明轮子
  Node没有重新走任何一门Server端语言的路
   Jscript虽然是JavaScript语法,但是丢失了事件编
    程模型
  Node解决了其他语言没有解决的问题
   采用事件模型消除多线程的烦恼




                                      60
最后感言

 Brendan Eich发明了JavaScript
 Douglas Crockford改变了JavaScript在
  Browser中被人误解的境地
 Ryan Dahl将JavaScript成功地带到了另一个
  领地




                                    61
Q &A




       62

More Related Content

What's hot

Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!Fred Chien
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServBen Lue
 
Ajax新手快车道
Ajax新手快车道Ajax新手快车道
Ajax新手快车道yiditushe
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式Fred Chien
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code QualityJoseph Chiang
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & WindowsChu-Siang Lai
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非Tony Deng
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web FrameworkFred Chien
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練Joseph Chiang
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月鍾誠 陳鍾誠
 
实时任务调度
实时任务调度实时任务调度
实时任务调度Tony Deng
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統Hsu Ping Feng
 
Script with engine
Script with engineScript with engine
Script with engineWebrebuild
 
由浅到深了解Java Script类
由浅到深了解Java Script类由浅到深了解Java Script类
由浅到深了解Java Script类sosoyou
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架wtxidian
 
前端杂乱分享
前端杂乱分享前端杂乱分享
前端杂乱分享shyboyzk
 

What's hot (19)

Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
All about NodeJS
All about NodeJSAll about NodeJS
All about NodeJS
 
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
 
Ajax新手快车道
Ajax新手快车道Ajax新手快车道
Ajax新手快车道
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code Quality
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
 
Script with engine
Script with engineScript with engine
Script with engine
 
由浅到深了解Java Script类
由浅到深了解Java Script类由浅到深了解Java Script类
由浅到深了解Java Script类
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
 
前端杂乱分享
前端杂乱分享前端杂乱分享
前端杂乱分享
 

Viewers also liked

October 22nd
October 22ndOctober 22nd
October 22ndPauospina
 
1stscenario presentation
1stscenario presentation1stscenario presentation
1stscenario presentationconlonmufc1999
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designJackson Tian
 

Viewers also liked (6)

Stock market crash
Stock market crashStock market crash
Stock market crash
 
October 22nd
October 22ndOctober 22nd
October 22nd
 
1stscenario presentation
1stscenario presentation1stscenario presentation
1stscenario presentation
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
 
World War I Terms
World War I TermsWorld War I Terms
World War I Terms
 
World War I terms
World War I termsWorld War I terms
World War I terms
 

Similar to Browser vs. Node.js Jackson Tian Shanghai

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Node getting-started
Node getting-startedNode getting-started
Node getting-startedlylijincheng
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較Stipc Nsysu
 
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianEventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianJackson Tian
 
Event proxy introduction
Event proxy introductionEvent proxy introduction
Event proxy introductionmysqlops
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型keelii
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
四天学会Ajax
四天学会Ajax四天学会Ajax
四天学会Ajaxmornone
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 

Similar to Browser vs. Node.js Jackson Tian Shanghai (20)

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Vue.js
Vue.jsVue.js
Vue.js
 
Node getting-started
Node getting-startedNode getting-started
Node getting-started
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
 
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianEventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
 
Event proxy introduction
Event proxy introductionEvent proxy introduction
Event proxy introduction
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型
 
Mvc
MvcMvc
Mvc
 
Node js实践
Node js实践Node js实践
Node js实践
 
Berserk js
Berserk jsBerserk js
Berserk js
 
四天学会Ajax
四天学会Ajax四天学会Ajax
四天学会Ajax
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 

More from Jackson Tian

Mobile webapp&v5 html5_min
Mobile webapp&v5 html5_minMobile webapp&v5 html5_min
Mobile webapp&v5 html5_minJackson Tian
 
Nodejs异步原理和缺陷 - 赵成
Nodejs异步原理和缺陷 - 赵成Nodejs异步原理和缺陷 - 赵成
Nodejs异步原理和缺陷 - 赵成Jackson Tian
 
Mongoskin - Guilin
Mongoskin - GuilinMongoskin - Guilin
Mongoskin - GuilinJackson Tian
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiJackson Tian
 
NodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiNodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiJackson Tian
 
Ruby vs Node ShiningRay Shanghai
Ruby vs Node ShiningRay ShanghaiRuby vs Node ShiningRay Shanghai
Ruby vs Node ShiningRay ShanghaiJackson Tian
 

More from Jackson Tian (8)

(C)NodeJS
(C)NodeJS(C)NodeJS
(C)NodeJS
 
Mobile webapp&v5 html5_min
Mobile webapp&v5 html5_minMobile webapp&v5 html5_min
Mobile webapp&v5 html5_min
 
Nodejs异步原理和缺陷 - 赵成
Nodejs异步原理和缺陷 - 赵成Nodejs异步原理和缺陷 - 赵成
Nodejs异步原理和缺陷 - 赵成
 
Mongoskin - Guilin
Mongoskin - GuilinMongoskin - Guilin
Mongoskin - Guilin
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
 
NodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiNodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 Shanghai
 
Ruby vs Node ShiningRay Shanghai
Ruby vs Node ShiningRay ShanghaiRuby vs Node ShiningRay Shanghai
Ruby vs Node ShiningRay Shanghai
 

Browser vs. Node.js Jackson Tian Shanghai