Node.js 框架和 Express.js

标签 node.js express frameworks web-deployment

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

The nonblocking eventloop concept.

最佳答案

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

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

Node程序在Node环境中执行,Node环境是单线程的,因此整个程序只有一个线程执行代码,不会有多个线程并发执行。

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

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

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

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

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)
}

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

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

关于Node.js 框架和 Express.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057140/

相关文章:

node.js - 如何在 AWS Device Farm 上运行 Detox 测试?

angularjs - 错误: Future resolved more than once

node.js - Express 服务器发送空 PDF 文件

c# - 使用 Entity Framework 4.1 将位字段参数传递给存储过程

ios - iOS9 和 OS X 10.11 El Capitan 中新 Notes 应用程序的公共(public) API

javascript - 将函数放入数组会弄乱其父函数

node.js - 什么是 sunproxyadmin 服务?

javascript - 在 node.js 中获取应用引擎的当前实例 ID

javascript - Expressjs 将用户重定向到错误的路线

jquery - 如何阻止框架在悬停时改变元素的颜色?