点击上方“逆锋起笔”,公众号回复 编程资源 领取大佬们推荐的学习资料 作者|Juan Cruz Martinez
来源|前端之巅
译者|吴留坡
实时应用程序,如聊天和提供实时更新的应用程序
将视频或其他多媒体内容流式传输给大量观众的流式应用程序
其他 I/O 密集型应用程序,如协作平台
遵循微服务架构的网络后端
const events = require("events");
const eventEmitter = new events.EventEmitter();
const eventListener = function(){
console.log("event triggered");
}
eventEmitter.on("emitted", eventListener);
eventEmitter.emit("emitted");
可读
可写的
可读写
先写入,再读出来
const fs = require("fs");
const readableStream = fs.createReadStream("test.txt");
let content = "";
readableStream.on("data", (chunk) => {
content += chunk;
});
readableStream.on("end", () => {
console.log(content);
});
const fs = require("fs");
fs.readFile("test.txt", (err, content) => {
console.log(content);
});
process.on("uncaughtException", (err) => {
console.log("exception caught: ", err);
});
开发人员更容易实现应用程序。我们的应用程序在生产过程中不会突然遇到意外的竞争条件。
单线程应用程序易于扩展。
它们可以毫不延迟地在一个时刻收到的大量用户请求提供服务。相比之下,当流量较大时,多线程后端必须等待线程池中的线程释放,才能为用户请求提供服务。利用 Node.js 的非阻塞特性,用户请求不会在单个线程上挂起太长时间(只有在操作不是 CPU 密集型时)。
setImmediate(() => {
console.log("first");
})
process.nextTick(() => {
console.log("second");
})
console.log("third");
third
second
first
// app.js
const express = require("express");
const app = express();
app.use("/", index);
app.use("/contact", contact);
app.use("/user", user);
module.exports = app;
// server.js
const http = require("http");
const app = require("/app");
app.set('port', process.env.PORT);
const http = http.createServer(app);
支持下
“在看”吗?在看就点一下吧