Download pdf - Let s Enjoy Node.js

Transcript
Page 1: Let s Enjoy Node.js

Let's Enjoy Node.jsLet's Enjoy Node.jsAll in JavaScript

Fred Chien

Page 2: Let s Enjoy Node.js

Enjoy Trip With 2 Rules

旅程將啟,兩點規則

Page 3: Let s Enjoy Node.js

1Buckle Up!

請繫安全帶!

Page 4: Let s Enjoy Node.js

DO NOT KICK MY ASS!請你的朋友不要打我的頭!

2

Page 5: Let s Enjoy Node.js

說好不打臉的!說好喔!

Page 6: Let s Enjoy Node.js

WHO AM I ?

我是誰?

Page 7: Let s Enjoy Node.js

Fred Chien錢逢祥

永遠的大四生

Page 8: Let s Enjoy Node.js

Fred Chien錢逢祥

永遠的大四生

Page 9: Let s Enjoy Node.js

Fred Chien錢逢祥

宅宅水電工

Page 10: Let s Enjoy Node.js

慾火焚身的男人

Page 11: Let s Enjoy Node.js

fred-zone.blogspot.com

cfsghost @ gmail.com

Page 12: Let s Enjoy Node.js

JavaScript大調查

Page 13: Let s Enjoy Node.js

Web 開發者共同的迷思

底層難!Porting 難!神人!大牛!

Page 14: Let s Enjoy Node.js

共同的夢想JavaScript 成為海賊王!!!

Page 15: Let s Enjoy Node.js

JavaScriptIs NOT Browser-side Language Anymore

是否不再只是瀏覽器端語言?

Page 16: Let s Enjoy Node.js

橡膠果實使一切成為可能

Page 17: Let s Enjoy Node.js

Run JavaScript without Browser

不需要瀏覽器的 JavaScript

Page 18: Let s Enjoy Node.js

Old School JavaScript

Page 19: Let s Enjoy Node.js

Without Browser

Page 20: Let s Enjoy Node.js

With Node.js

Page 21: Let s Enjoy Node.js

More Third-party Modules

Page 22: Let s Enjoy Node.js

More Supports

Page 23: Let s Enjoy Node.js

換句話說In other words

Page 24: Let s Enjoy Node.js

Enjoy JavaScriptEnjoy It

Page 25: Let s Enjoy Node.js

Server-side Development

開發後端應用

Page 26: Let s Enjoy Node.js

PHP/Perl/Python/JSP/ASP...

開發後端應用

Page 27: Let s Enjoy Node.js

System Development

開發系統程式

Page 28: Let s Enjoy Node.js

Services/Daemon/Syscall...etc

控制作業系統的一切

Page 29: Let s Enjoy Node.js

更進一步Even More

Page 30: Let s Enjoy Node.js

All Development

開發一切應用

Page 31: Let s Enjoy Node.js

About node.js

● Stable version is 0.6.15● Support platforms:

○MS Windows○Mac OS X○Linux○FreeBSD

Page 32: Let s Enjoy Node.js

node.js Features

● Based on V8 JavaScript Engine (With JIT)

● Stand-alone (Without Web Browser)

● Event-driven

● Non-blocking I/O model

Page 33: Let s Enjoy Node.js

● Extending with C/C++

● Support Multi-core Systems

● Provide Buffer Class○ Solve 1.9GB heap limit of V8○ Nice to binary data

More Good Things Come

Page 34: Let s Enjoy Node.js

● Thousands of Concurrent Connections ● Minimal Overhead (CPU/Memory) on a

singal process

Great Performance on Server

Page 35: Let s Enjoy Node.js

Hello World快速試看看

Page 36: Let s Enjoy Node.js

Hello World! (helloworld.js)

var http = require('http');

http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(10000);

console.log('Server running at http://localhost:10000/');

Page 37: Let s Enjoy Node.js

Run It!

$ node ./helloworld.jsServer running at http://localhost:10000/

Page 38: Let s Enjoy Node.js

Cluster Support (cluster.js)var cluster = require('cluster');var http = require('http');var numCPUs = require('os').cpus().length;

if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); }

cluster.on('death', function(worker) { console.log('worker ' + worker.pid + ' died'); });} else { // Worker processes have a http server. http.Server(function(req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000);}

Page 39: Let s Enjoy Node.js

Run It!

$ node ./cluster.jsWorker 18394 onlineWorker 18393 online

Page 40: Let s Enjoy Node.js

MongoDB Support (mongodb.js)var mongodb = require('mongodb');var server = new mongodb.Server('localhost', 27017);var db = new mongodb.Db('mydb', server);

/* open db */db.open(function() {

/* Select 'contact' collection */ db.collection('contact', function(err, collection) {

/* Querying (name == 'Fred Chien') */ collection.find({ name: 'Fred Chien' }, function(err, data) { console.log('Name: ' + data.name + ', email: ' + data.email); });

});

});

Page 41: Let s Enjoy Node.js

Run It!

$ node ./mongodb.jsname: Fred Chien, email: [email protected]

Page 42: Let s Enjoy Node.js

Write a XMPP Server (xmppsrv.js)var xmpp = require('node-xmpp');

var c2s = new xmpp.C2S({ port: 5222, domain: 'example.com'});

c2s.on("authenticate", function(jid, password, client) { if (password == "12345678") { client.emit("auth-success", jid); } else { client.emit("auth-fail", jid); }});

console.log('My XMPP Server was running at localhost:5222');

Page 43: Let s Enjoy Node.js

Run It!

$ node ./xmppsrv.jsMy XMPP Server was running at localhost:5222

Page 44: Let s Enjoy Node.js

Node.js Modules你可以抓到更多的模組

Page 45: Let s Enjoy Node.js

NPMNode Package Manager

Page 46: Let s Enjoy Node.js
Page 47: Let s Enjoy Node.js

8844+Large Amount of Module

Page 48: Let s Enjoy Node.js

Get Modules with NPM

$ npm install mongodb$ npm install node-xmpp

Page 49: Let s Enjoy Node.js

References

●Node.js Official Website:http://nodejs.org/

●NPM Official Website:http://npmjs.org/

Page 50: Let s Enjoy Node.js

Community in Taiwan

● Node.js Taiwanhttp://nodejs.tw/

● Facebook Fans Page# NodeJS.tw

● Node.js Taiwan Party in TaipeiOnce Every other Thursday

Page 51: Let s Enjoy Node.js

總結來說...Anyway...

Page 52: Let s Enjoy Node.js

前端開發者走入後端

一種語言前後都可玩

Page 53: Let s Enjoy Node.js

Web開發者

將實現夢想

寫系統程式啦

Page 54: Let s Enjoy Node.js

低階程式讓專業的來

用 Node.js C/C++ Addon 打通硬體和系統的任督二脈

Page 55: Let s Enjoy Node.js

JSer 只要專心惡搞

仍然不需要管底層的事

Page 56: Let s Enjoy Node.js

大秘寶就是我們的!

我是海賊王!

Page 57: Let s Enjoy Node.js

Question?提問?

Page 58: Let s Enjoy Node.js

Thanks感謝您的耐心耹聽


Recommended