Javascript 什么是Node.js?

Javascript 什么是Node.js?,javascript,node.js,v8,evented-io,Javascript,Node.js,V8,Evented Io,我不完全明白这一切。可能是因为我主要是一名基于web的业务应用程序开发人员。它是什么?它有什么用途 到目前为止,我的理解是: 编程模型是事件驱动的,尤其是其处理方式 它使用,解析器是 它可以轻松地用于创建并发服务器应用程序 我的理解正确吗?如果是的话,那么事件I/O的好处是什么呢?它只是更多地用于并发性吗?另外,Node.js的发展方向是成为类似于基于JavaScript(基于V8)的框架编程模型吗 Node的目标是提供一种简单的方法 构建可扩展的网络程序 节点在设计上类似于Ruby的事件机或

我不完全明白这一切。可能是因为我主要是一名基于web的业务应用程序开发人员。它是什么?它有什么用途

到目前为止,我的理解是:

  • 编程模型是事件驱动的,尤其是其处理方式
  • 它使用,解析器是
  • 它可以轻松地用于创建并发服务器应用程序
  • 我的理解正确吗?如果是的话,那么事件I/O的好处是什么呢?它只是更多地用于并发性吗?另外,Node.js的发展方向是成为类似于基于JavaScript(基于V8)的框架编程模型吗

    • Node的目标是提供一种简单的方法 构建可扩展的网络程序
    • 节点在设计上类似于Ruby的事件机或Python的Twisted等系统,并受其影响
    • V8 javascript的事件I/O
    对我来说,这意味着你的三个假设都是正确的。这个图书馆看起来很有前途

    是JavaScript的一个实现。它允许您运行独立的JavaScript应用程序(除其他外)

    Node.js只是一个为V8编写的库,它执行事件I/O。这个概念解释起来有点棘手,我相信有人会给出比我更好的解释来回答。。。要点是,与其做一些输入或输出并等待它发生,不如不要等待它完成。例如,询问文件的上次编辑时间:

    // Pseudo code
    stat( 'somefile' )
    
    这可能需要几毫秒,也可能需要几秒钟。使用evented,您只需启动请求,而不是在周围等待,并附加一个在请求完成时运行的回调:

    // Pseudo code
    stat( 'somefile', function( result ) {
      // Use the result here
    } );
    // ...more code here
    
    这使得它非常像浏览器中的JavaScript代码(例如,具有样式功能)


    要了解更多信息,您应该查看我介绍图书馆/平台的文章。。。我觉得它很好。

    我认为它的优点是:

  • 虚拟机上的动态语言(JavaScript)Web开发速度非常快(V8)。它比Ruby、Python或Perl快得多

  • 能够在单个进程上以最小的开销处理数千个并发连接

  • JavaScript非常适合于具有第一类函数对象和闭包的事件循环。在浏览器中使用它来响应用户发起的事件后,人们已经知道如何以这种方式使用它

  • 很多人已经知道JavaScript,即使是那些不自称是程序员的人。它可以说是最流行的编程语言

  • 在web服务器和浏览器上使用JavaScript可以减少两个编程环境之间的阻抗不匹配,这两个编程环境可以通过JSON通信数据结构,JSON在等式的两侧都起相同的作用。重复的表单验证代码可以在服务器和客户端之间共享,等等


  • 闭包是在创建代码的上下文中执行代码的一种方式

    这对Concurence意味着,您可以定义变量,然后启动一个非阻塞函数,并向它发送一个匿名函数以进行回调

    当任务完成时,回调函数将在包含变量的上下文中执行,这就是闭包

    闭包之所以非常适合使用非阻塞I/O编写应用程序,是因为它非常容易管理异步执行的函数的上下文。

    是为服务器端JavaScript代码构建的开源命令行工具。您可以下载、编译和安装源代码。它允许您运行JavaScript程序

    JavaScript由Google开发的JavaScript引擎执行,该引擎用于浏览器。它使用JavaScript API访问网络和文件系统

    它因其性能和执行并行操作的能力而广受欢迎

    这是迄今为止我发现的最好的解释

    下面是一些关于这个话题的好文章


    两个很好的例子是关于如何管理模板和使用渐进式增强的。您只需要一些轻量级的JavaScript代码就可以让它完美地工作

    我强烈建议您观看并阅读以下文章:

    选择任何一种语言,试着记住如何管理HTML文件模板,以及更新结构中的单个类名需要做什么(例如,用户单击菜单项,您希望该菜单项标记为“选中”,并更新页面内容)

    对于Node.js,它与在客户端JavaScript代码中执行一样简单。获取DOM节点并将CSS类应用于该节点。获取DOM节点和innerHTML内容(需要一些额外的JavaScript代码来完成这项工作。阅读本文了解更多信息)


    另一个很好的例子是,您可以使用同一段代码使您的网页与打开或关闭JavaScript兼容。假设您在JavaScript中选择了一个日期,允许您的用户使用日历选择任何日期。您可以编写(或使用)同一段JavaScript代码,使其在JavaScript打开或关闭的情况下工作。

    我在工作时使用Node.js,发现它非常强大。被迫选择一个词来描述Node.js,我会说“有趣”(这不是一个纯粹的积极形容词)。社区充满活力,不断发展。JavaScript,尽管它很奇怪,但可以成为一种很好的编码语言。您将每天重新思考自己对“最佳实践”和结构良好的代码模式的理解。现在Node.js中充满了巨大的思想能量,在其中工作会让你接触到所有这些思想——伟大的精神举重

    Node.js在生产环境中绝对是可能的,但与文档中承诺的“交钥匙”部署相去甚远。使用Node.js v0.6.x,“cluste
    var http = require('http');
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end(myJavascriptObject.getSomeStatusInfo());
    }).listen(1337, "127.0.0.1");
    
    var myData = "foo";
    database.connect( 'user:pass', function myCallback( result ) {
        database.query("SELECT * from Foo where id = " + myData);
    } );
    // Note that doSomethingElse() executes _BEFORE_ "database.query" which is inside a callback
    doSomethingElse();