前端与NODEJS | 青训营笔记

54 阅读2分钟

本堂课重点内容:

NODEJS与前端开发

面试官喜欢问:libuv:eventloop事件循环,syscall系统调用 libuv用来做什么,底层调用很多c++

js单线程:JS线程+uv线程+V8任务线程池+V8 Insector线程

NODE.JS跨平台 + JS无需编译环境·(+WEB跨平台+诊断工具平台) = 开发成本低

http.createServer里面有个callback,会被调用哦那个多次,在这种是不适合使用promsie,promise支持只是调用一次

SSR特点

  • 相对于传统HTML:避免重复编写代码
  • 相对SPA:首屏渲染更快,SEO更友好
  • 通常qps较低,前端编写代码的时候需要考虑服务端渲染的情况

react-SSR难点

  • 需要考虑前端代码在服务器运行好的逻辑
  • 需要打包处理代码
  • 移除对服务器无意义的副作用

nodejs特点

单线程

在Java、PHP等服务器语言中,会为每一个客户端创建一个新的线程,而每个线程需要消耗大约2MB的内存。也就是说,一个8GB的内存可以满足4000人 的访问连接,这样就增加了服务器的硬件成本。Nodejs不需要为每个用户的连接创建一个新的线程,而仅仅使用一个线程,一个8GB的内存可以满足 40000人的连接。

好处

操作系统不会再有创建线程、销毁线程的开销。

坏处

如果一个用户导致了线程的崩溃,那么整个服务就崩溃了。

非阻塞I/O

由于Nodejs采用了非阻塞I/O机制,因此在执行访问数据库的代码后,立即转而执行其后的代码,把数据库返回结果的代码处理放在了回调函数中,从而提高了程序的执行效率。当某个I/O执行完毕时,将以事件的形式通知执行I/O的线程,线程执行这个事件的回调函数,为了处理这个异步I/O,线程必须有事件循环,不断的检查有没有未处理的事件,依次予以处理。

事件驱动

在nodejs中,客户端请求建立连接,数据提交等行为,会触发相应的事件。在nodejs中,在一个时刻只能执行一个事件的回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件,然后返回继续执行原事件的回调函数,这种处理机制,称为‘事件环’机制。