【问题标题】:Node.js framework & Express.jsNode.js 框架和 Express.js
【发布时间】:2016-06-03 05:13:19
【问题描述】:

学习 Express.js 的最佳资源是什么?谁能解释一下 node.js 框架,它是如何工作的。

非阻塞事件循环概念。

【问题讨论】:

    标签: node.js express frameworks web-deployment


    【解决方案1】:

    我发现 Express 网站解释得很好,而且 Express 对于新用户来说非常容易接近。

    多线程系统(例如 Java 和底层 JVM)包含许多执行线程,每个线程可以同时执行自己的代码指令(在多核硬件 CPU 上),或在每个线程运行的位置之间切换一个预定的时间段,然后操作系统安排下一个线程执行。

    Node程序在Node环境中执行,是单线程的,所以整个程序只有一个代码执行线程,没有多个线程并发执行。

    一个简单的类比是将事件循环与标准编程结构,即while循环进行比较,这正是它的本质。

    while(1){
       // Node sets this up.  Do stuff.. Runs until our program terminates.
    }
    

    启动节点程序将启动此循环。你可以想象你的程序被插入到这个循环中。

    如果程序中的第一条指令是从磁盘读取文件。该请求将被分派到底层操作系统系统调用以读取文件。

    Node 为诸如读取文件之类的事情提供异步和同步功能,尽管通常首选异步,因为在同步调用中,读取文件的问题会在单线程系统中暂停整个程序。

    while(1){
      require('fs').readFileSync('file.txt');
      // stop everything until the OS reports the file has been read
    }
    

    在(首选)异步版本中,向操作系统发出读取文件的请求,并指定回调函数,循环继续。程序本质上是在等待操作系统响应,然后在下一个循环(也称为滴答声)上,系统会调用您提供的回调函数(本质上只是内存中的一个位置)并返回结果。

    while(1){
      // 1st loop does this
      require('fs').readFile('file.txt', callback);
    
      // 2nd loop does this, system calls our callback function with the result
      callback(err, result)
    }
    

    单线程系统具有预期的优势。一是在线程之间没有需要由操作系统完成的上下文切换,这消除了在系统中执行该任务的开销。

    另一个,这是一个激烈争论的话题,它与其他系统和编程语言处理它的方式相比如何 - 是使用回调函数作为实现异步的手段进行编程的简单性。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多