gpt4 book ai didi

Node.js 框架和 Express.js

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:29 25 4
gpt4 key购买 nike

学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com