NodeJs 其实就是一个解释器能够将JS文件转换成系统调用,进而可在服务器上执行
nodeJs特色:
1、事件驱动方式
程序执行采用事件循环机制,由一个进程process不停的Event Loop去在事件队列寻找事件源,无事件源时程序退出
2、异步函数调用 (即无返回值,参数中有一个回调函数,将返回结果回调函数的参数中)
当碰到js引擎无法执行的操作,新开一个进程进行系统调用,返回结果放入事件源队列等待Loop处理
比如要获取文件结果的操作不能直接使用像Java那样直接赋值,因为文件操作缓慢会把主线程阻塞,而应该给该函数再传入一个带参回调函数,参数用来接收返回的数据
同步调用:直接执行返回得到结果
异步调用:执行不能直接得到结果,需要重新开一个进程进行监听,将结果返回到回调函数的参数中
ps: 创建server是一个同步调用,而server监听请求是一个异步的调用。所以有个语法糖,在创建server的时候就传入一个监听请求的回调函数,这样格式像是创建服务器也是异步操作。
const http = require("http");
let server = http.createServer(function (req, res) { //request和response
// 服务器收到浏览器web请求后,打印一句话
console.log("recv req from browser");
// 服务器给浏览器回应消息
res.end("hello browser");
});
server.listen(3000);
模块:
require(./Mymath) 引入自己的文件模块,而从npm等引入的系统模块不需要./
express框架:
express其实就是一个函数,是别人已经写好的httpRequest的监听函数,帮助我们方便的处理请求。可通过中间件机制来进行扩展,中间件可以自己写,也可从npm库中引用。
中间件详细参考:https://blog.youkuaiyun.com/huang100qi/article/details/80220012#commentBox