2011-12-12 23:19:14 +01:00
<!doctype html>
2011-12-20 05:57:45 +01:00
< html lang = "en" >
2009-06-05 12:23:51 +02:00
< head >
2011-12-20 05:57:45 +01:00
< meta charset = "utf-8" >
< style >
2009-06-05 12:23:51 +02:00
ul {
padding: 0;
margin: 0;
}
2009-08-26 22:03:19 +02:00
< / style >
2011-12-12 23:19:14 +01:00
< link type = "image/x-icon" rel = "icon" href = "favicon.ico" >
< link type = "image/x-icon" rel = "shortcut icon" href = "favicon.ico" >
2011-12-20 05:57:45 +01:00
< link rel = "stylesheet" href = "pipe.css" >
< link rel = "stylesheet" href = "sh_vim-dark.css" >
2011-03-17 21:32:27 +01:00
< link rel = "alternate"
type="application/rss+xml"
2011-03-18 23:49:26 +01:00
title="node blog"
2011-12-12 23:19:14 +01:00
href="http://feeds.feedburner.com/nodejs/123123123">
2009-06-05 12:23:51 +02:00
< title > node.js< / title >
< / head >
2012-01-23 11:12:20 +01:00
< body id = "front" >
2011-12-12 07:25:42 +01:00
< div id = "intro" >
2011-12-12 23:19:14 +01:00
< img id = "logo" src = "logo.png" alt = "node.js" >
2009-06-05 12:23:51 +02:00
2011-12-12 07:25:42 +01:00
< p > Node.js is a platform built on < a
href="http://code.google.com/p/v8/">Chrome's JavaScript runtime< / a >
for easily building fast, scalable network applications. Node.js
uses an event-driven, non-blocking I/O model that makes it
lightweight and efficient, perfect for data-intensive real-time
applications that run across distributed devices.< / p >
2009-06-05 12:23:51 +02:00
2012-01-12 23:08:08 +01:00
< a href = "#download" class = "button" id = "downloadbutton" > Download< / a >
< a href = "http://nodejs.org/docs/latest/api/index.html" class = "button" id = "docsbutton" > Docs< / a >
2012-02-01 03:43:23 +01:00
< p class = "version" > v0.7.2< / p >
2011-12-12 07:25:42 +01:00
< / div >
< div id = "quotes" class = "clearfix" >
< h2 > Node.js in the Industry< / h2 >
< ul >
2011-12-12 23:19:14 +01:00
< li class = "microsoft" > < img src = "microsoft-logo.png" >
2011-12-12 07:25:42 +01:00
< p > Node gives Azure users the first end-to-end JavaScript
experience for the development of a whole new class of real-time
applications.
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< a href = "http://blogs.msdn.com/b/interoperability/" > Claudio Caldato< / a >
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< span > Principal Program Manager, Interoperability Strategy< / span > < / p > < / li >
2011-12-12 23:19:14 +01:00
< li class = "ebay" > < img src = "ebay-logo.png" >
2011-12-12 07:25:42 +01:00
< p > Node’ s evented I/O model freed us from worrying about locking
and concurrency issues that are common with multithreaded async
I/O.
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< a href = "http://www.ebaytechblog.com/2011/11/30/announcing-ql-io/" > Subbu Allamarju< / a >
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< span > Principal Member, Technical Staff< / span > < / p > < / li >
2011-12-12 23:19:14 +01:00
< li class = "linkedin" > < img src = "linkedin-logo.png" >
2011-12-12 07:25:42 +01:00
< p > On the server side, our entire mobile software stack is
completely built in Node. One reason was scale. The second is
Node showed us huge performance gains.
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< a href = "http://venturebeat.com/2011/08/16/linkedin-node/" > Kiran Prasad< / a >
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< span > Director of Engineering, Mobile< / span > < / p > < / li >
2011-12-12 23:19:14 +01:00
< li class = "yahoo" > < img src = "yahoo-logo.png" >
2011-12-12 07:25:42 +01:00
< p > Node.js is the execution core of Manhattan. Allowing
developers to build one code base using one language – that is
the nirvana for developers.
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< a href = "http://developer.yahoo.com/blogs/ydn/posts/2011/11/yahoo-announces-cocktails-%E2%80%93-shaken-not-stirred/" > Renaud Waldura< / a >
2011-12-12 23:19:14 +01:00
< br >
2011-12-12 07:25:42 +01:00
< span > Sr. Product Manger, Cocktail< / span > < / p > < / li >
< / ul >
< / div >
2011-12-12 23:19:14 +01:00
< div id = "download" >
< a href = "#" id = "download-close" > X< / a >
< img id = "download-logo" src = "download-logo.png" alt = "node.js" >
< ul id = "installers" class = "clearfix" >
2012-02-01 03:43:23 +01:00
< li > < a href = "http://nodejs.org/dist/v0.7.2/node-v0.7.2.msi" > Windows Installer< / a > < br > node-v0.7.2.msi< / li >
< li > < a href = "http://nodejs.org/dist/v0.7.2/node-v0.7.2.pkg" > Macintosh Installer< / a > < br > node-v0.7.2.pkg< / li >
< li id = "source" > < a href = "http://nodejs.org/dist/v0.7.2/node-v0.7.2.tar.gz" > Source Code< / a > < br > node-v0.7.2.tar.gz< / li >
2011-12-12 23:19:14 +01:00
< / ul >
< ul id = "documentation" >
2012-02-01 03:43:23 +01:00
< li > < a href = "https://raw.github.com/joyent/node/v0.7.2/ChangeLog" > Change Log< / a > < / li >
< li > < a href = "http://nodejs.org/docs/v0.7.2/api/index.html" > Documentation< / a > < / li >
< li > < a href = "http://nodejs.org/dist/v0.7.2" > Other release files< / a > < / li >
< li > < a href = "https://raw.github.com/joyent/node/v0.7.2/LICENSE" > License< / a > < / li >
2011-12-12 23:19:14 +01:00
< li > < a href = "https://github.com/joyent/node" > Git Repository< / a > < / li >
2011-12-19 07:54:15 +01:00
< li > < a href = "https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager" > Installing
with a Package Manager< / a >
2011-12-12 23:19:14 +01:00
< / ul >
< / div >
< script > ; ( f u n c t i o n ( ) {
// attach as soon as the required elements are in the DOM.
// don't need to wait for entire document to be ready, since we're
// not adding any *new* nodes to the < body > , so there's no threat
// of 'Invalid operation' errors in old MSIE 6.
document.getElementById('downloadbutton').onclick = function(e) {
e = e || window.event;
e.stopPropagation & & e.stopPropagation();
2011-12-13 20:11:14 +01:00
e.cancelBubble = true;
// need to give the hash a tick to update
setTimeout(downloadDialogUpdate, 0);
2011-12-12 23:19:14 +01:00
};
document.getElementById('download-close').onclick =
document.documentElement.onclick = function(e) {
e = e || window.event;
if (location.hash === '#download') location.hash = '';
downloadDialogUpdate();
};
document.getElementById('download').onclick = function(e) {
e = e || window.event;
e.stopPropagation & & e.stopPropagation();
2011-12-13 20:11:14 +01:00
e.cancelBubble = true;
2011-12-12 23:19:14 +01:00
};
// I keep expecting < Esc > to close the dialog...
document.documentElement.onkeydown = function(e) {
e = e || window.event;
var k = e.which || e.keyCode || e.keyIdentifier;
if (typeof k === 'string') k = k.charCodeAt(0);
if (k === 27) document.documentElement.onclick(e);
};
// hacky workaround for old ie browsers that don't support :target css.
function downloadDialogUpdate () {
var div = document.getElementById('download');
2011-12-13 20:11:14 +01:00
if (!div) return;
2011-12-12 23:19:14 +01:00
var expect = location.hash === '#download' ? 'block' : 'none';
2011-12-13 20:11:14 +01:00
var actual = div.currentStyle ? div.currentStyle.display
: window.getComputedStyle
? document.defaultView.getComputedStyle(div, null).getPropertyValue('display')
: null;
// it looks like a string, but it might not actually be a string.
// explicitly cast for MSIE 6 and 7.
actual = '' + actual;
expect = '' + expect;
if (actual !== expect) {
div.style.display = expect;
}
2011-12-12 23:19:14 +01:00
}
downloadDialogUpdate();
})();< / script >
2011-12-12 07:25:42 +01:00
< div id = "content" class = "clearfix" >
< div id = "column1" >
< h2 > An example: Webserver< / h2 >
< p > This simple web server written in Node responds with "Hello World" for every request.< / p >
< pre >
2010-06-24 02:40:51 +02:00
var http = require('http');
2009-10-09 14:18:10 +02:00
http.createServer(function (req, res) {
2010-06-11 08:19:43 +02:00
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
2011-04-23 01:01:34 +02:00
}).listen(1337, "127.0.0.1");
2011-12-12 07:25:42 +01:00
console.log('Server running at http://127.0.0.1:1337/');< / pre >
2009-08-26 22:03:19 +02:00
2011-12-12 07:25:42 +01:00
< p > To run the server, put the code into a file < code > example.js< / code > and execute it with the < code > node< / code > program:< / p >
< pre class = "sh_none" >
2009-10-16 13:46:16 +02:00
% node example.js
2011-04-23 01:01:34 +02:00
Server running at http://127.0.0.1:1337/< / pre >
2009-08-26 22:03:19 +02:00
2011-12-12 07:25:42 +01:00
< p > Here is an example of a simple TCP server which listens on port 1337 and echoes whatever you send it:< / p >
2009-10-16 13:46:16 +02:00
2011-12-12 07:25:42 +01:00
< pre >
2010-06-09 08:25:55 +02:00
var net = require('net');
2011-02-23 21:56:50 +01:00
var server = net.createServer(function (socket) {
2010-07-03 10:54:35 +02:00
socket.write("Echo server\r\n");
2011-02-23 21:56:50 +01:00
socket.pipe(socket);
2011-04-23 01:01:34 +02:00
});
2011-02-23 21:56:50 +01:00
2011-12-12 07:25:42 +01:00
server.listen(1337, "127.0.0.1");< / pre >
<!-- <p>Ready to dig in? <a href="">Download the latest version</a> of node.js or learn how other organizations are <a href="">using the technology</a>.</p> -->
< / div >
< div id = "column2" >
< h2 > Featured< / h2 >
2011-12-12 23:19:14 +01:00
< a href = "http://www.youtube.com/watch?v=jo_B4LTHi3I" > < img src = "ryan-speaker.jpg" > < / a >
2011-12-12 07:25:42 +01:00
A guided introduction to Node
< h2 > Explore Node.js< / h2 >
< ul id = "explore" >
2011-12-12 23:34:37 +01:00
< li > < a href = "about/" class = "explore" > About< / a > < br > < span > Technical overview< / span > < / li >
< li > < a href = "http://search.npmjs.org/" class = "explore" > npm Registry< / a > < br > < span > Modules, resources and more< / span > < / li >
< li > < a href = "http://nodejs.org/docs/latest/api/index.html" class = "explore" > Documentation< / a > < br > < span > API Specifications< / span > < / li >
< li > < a href = "http://blog.nodejs.org" class = "explore" > Node.js Blog< / a > < br > < span > Insight, perspective and events< / span > < / li >
< li > < a href = "community/" class = "explore" > Community< / a > < br > < span > Mailing lists, blogs, and more< / span > < / li >
< li > < a href = "logos/" class = "explore" > Logos< / a > < br > < span > Logo and desktop background< / span > < / li >
2011-12-12 23:40:00 +01:00
< li > < a href = "http://jobs.nodejs.org/" class = "explore" > Jobs< / a > < br > < ol class = "jobs" > <!-- JOBS --> <!-- JOBS --> < / ol > < / li >
2011-12-12 07:25:42 +01:00
< / ul >
2009-06-05 12:23:51 +02:00
< / div >
2011-12-12 07:25:42 +01:00
< / div >
2011-12-12 23:19:14 +01:00
2011-12-12 07:25:42 +01:00
< div id = "footer" >
2012-01-22 05:02:16 +01:00
< ul class = "clearfix" >
< li > < a href = "/" > Node.js< / a > < / li >
< li > < a href = "/#download" > Download< / a > < / li >
< li > < a href = "/about/" > About< / a > < / li >
< li > < a href = "http://search.npmjs.org/" > npm Registry< / a > < / li >
< li > < a href = "http://nodejs.org/docs/latest/api/index.html" > Docs< / a > < / li >
< li > < a href = "http://blog.nodejs.org" > Blog< / a > < / li >
< li > < a href = "/community/" > Community< / a > < / li >
< li > < a href = "/logos/" > Logos< / a > < / li >
< li > < a href = "http://jobs.nodejs.org/" > Jobs< / a > < / li >
2012-01-23 11:12:20 +01:00
<!-- <li><a hrfe="http://twitter.com/nodejs" class="twitter">@nodejs</a></li> -->
2012-01-22 05:02:16 +01:00
< / ul >
2012-02-01 03:43:23 +01:00
< p > Copyright 2010 < a href = "http://joyent.com" > Joyent, Inc< / a > , Node.js is a < a href = "/trademark-policy.pdf" > trademark< / a > of Joyent, Inc. View < a href = "https://raw.github.com/joyent/node/v0.7.2/LICENSE" > license< / a > .< / p >
2010-12-01 08:00:32 +01:00
< / div >
2010-11-10 00:43:52 +01:00
2012-01-22 05:02:16 +01:00
2011-12-20 05:57:45 +01:00
< script src = "sh_main.js" > < / script >
< script src = "sh_javascript.min.js" > < / script >
< script > highlight ( undefined , undefined , 'pre' ) ; < / script >
2011-12-12 07:25:42 +01:00
2011-12-20 05:57:45 +01:00
< script >
2009-10-16 13:46:16 +02:00
var gaJsHost = (("https:" == document.location.protocol) ?
"https://ssl." : "http://www.");
2009-11-04 00:18:05 +01:00
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
2009-10-16 13:46:16 +02:00
< / script >
2011-12-20 05:57:45 +01:00
< script >
2009-10-16 13:46:16 +02:00
try {
var pageTracker = _gat._getTracker("UA-10874194-2");
pageTracker._trackPageview();
2011-12-12 23:19:14 +01:00
} catch(err) {}
< / script >
2009-06-05 12:23:51 +02:00
< / body >
2009-05-13 17:46:00 +02:00
< / html >