几个问题在node.js

时间:2012-03-20 13:03:55

标签: javascript node.js

// Server.js

var http = require('http');
var path = require('path');
var fs = require('fs');

http.createServer(function (request, response) {

    console.log('request starting...');

    var filePath = '.' + request.url;
    if (filePath == './')
        filePath = './index.html';

    path.exists(filePath, function(exists) {

        if (exists) {
            fs.readFile(filePath, function(error, content) {
                if (error) {
                    response.writeHead(500);
                    response.end();
                }
                else {
                    response.writeHead(200, { 'Content-Type': 'text/html' });
                    response.end(content, 'utf-8');
                }
            });
        }
        else {
            response.writeHead(404);
            response.end();
        }
    });

}).listen(8125);

console.log('Server running at http://127.0.0.1:8125/');

// index.html

<html>
    <head>
        <title>Rockin' Page</title>
        <link type="text/css" rel="stylesheet" href="style.css" />
        <script type="text/javascript" src="jquery-1.7.1.min.js"></script>   
        </head>
    <body>
        <p>This is a page. For realz, yo.</p>
    </body>
    <script type="text/javascript">
        $(document).ready(function() {
            alert('happenin');
        });
    </script>
</html>

我可以运行我的静态页面,但我有几个问题。

  1. 接下来我该怎么办?我的意思是开发什么,学什么?我很困惑..我正在使用当前的网络服务器有什么不同。
  2. node.js只是我的Apache Web服务器的替代品。
  3. 任何人都可以清楚地向我解释nodejs的主要目的

3 个答案:

答案 0 :(得分:3)

node.js是一个平台(语言,库和解释器)和Turing-complete,即你可以用它做任何。最有可能的是,您需要一个以某种方式交互的Web应用程序。看看像a chat room这样的例子。还有lots of other resources on how to get started

最后,由您希望您的网站取决于您。一个聊天室?一个论坛?一个搜索引擎?多人游戏?如果您只想传输静态文件(即不需要服务器状态或客户端之间的通信),则无需使用node.js.

答案 1 :(得分:2)

这是来自nodejs creator ryan ... http://www.youtube.com/watch?v=jo_B4LTHi3I

的精彩视频

它解释了代码示例的含义是非常好的。

这里有一些您可以查看的资源

http://blog.jayway.com/2011/05/15/a-not-very-short-introduction-to-node-js/

http://www.nodetuts.com/

http://www.howtonode.org/

答案 2 :(得分:2)

问题

  1. 接下来我该怎么办?我的意思是开发什么,学什么?我很困惑..我正在使用当前的网络服务器有什么不同。
  2. node.js只是我的Apache Web服务器的替代品。
  3. 任何人都可以清楚地向我解释nodejs的主要目的
  4. <强>答案

    1. 从一些简单的示例和/或教程开始。我在github上分叉了 Mastering Node ,这是一个快速阅读,但仍在进行中。我已经使用expressjs快速创建静态网站(比如我的在线简历)。我还使用node.js和nodeunit来测试JavaScript或执行脚本任务,否则可以在bash,php,batch,perl等中完成。

    2. node.js为Google的V8 JavaScript引擎提供了一个IO包装器。这意味着JavaScript不会绑定到Web浏览器,并且可以与任何类型的IO进行交互。这意味着文件,套接字,进程(phihag的图灵 - 完整答案)。它几乎可以做任何事情。

    3. nodejs的主要目的是使IO代码处于正常状态,并且(大部分)是非阻塞的。例如,在ASP.NET中,当Web服务器收到一个请求时,请求的线程被阻塞,直到所有处理完成(除非由异步处理程序处理,这不是规则的例外)。在node.js(express,railwayjs等)中,请求处理由事件和回调处理。代码以异步方式执行,并在完成后执行回调。这类似于ASP.NET的异步页面,主要区别在于node.js和web框架之上不会创建数百万个线程。我相信Ryan的视频中讨论了线程问题。