58
Let's Enjoy Node.js Let's Enjoy Node.js All in JavaScript Fred Chien

Let s Enjoy Node.js

Embed Size (px)

DESCRIPTION

The next generation JavaScript doesn't need to dependent on browser, that's just like other programming language. Node.js is it, no need browser, based on fastest V8 JavaScript Engine and provides many APIs for system integration. It can be used to server-side and system, even more purpose.

Citation preview

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感謝您的耐心耹聽