node基础知识
1.什么是 node.js
Node.js是-一个基于Chrome V8引擎的JavaScript 运行环境。
Node Standard Library ---node js标准库 (js是脚本语言通常不能操作本机文件 但是nodejs可以 实际上程序员本身编写就是js脚本 只不过瑞安达尔做了一个node Bindings(类似于翻译机)将你的js脚本语言翻译成C/C++语言 从而可以支持socket、http、file可以操作本机文件功能 但是他只负责翻译语言 其他的他借助了chrome V8 (js engine)、Async(libuv库) 、Event Loop--事件轮询(libuv库)实现的)
2.node特点
-
优点。
-
异步非阻塞的I/O (I/O线程池)。
I/O
:文件的读写、数据库的读写(后端人员口中的I/O操作80%都是数据库操作)I/O线程池
:正常服务器在请求数据库数据时会有线程 而线程都是即时即用 用完销毁的 而线程池里面的线程则不用执行完后销毁 而是时刻保持清醒状态 当服务器启动时 线程池里面的线程就准备好了待命状态。反应速度响应快 -
特别适用于I/0密集型应用。
I/0密集型
:意思就是频繁的进行I/O操作 频繁的进行数据库的读写操作 -
事件循环机制。
单线程。一般单线程都有事件循环机制
-
跨平台
一处编写 随处可用(window、linux、ios多个node版本 实质就是每个系统的版本都有类似于翻译官的工作)
-
-
不足之处
-
回调函数嵌套太多、 太深(俗称回调地狱)
现在ES6的promise的async 和 await
基本
上解决问题 -
单线程, 处理不好
CPU密集型
任务 -
java服务器和node服务器对比
-
让我们把客户端当做餐厅吃饭的客人 服务器当做服务员 后端数据库当做后厨再来看待这个问题,客人要点餐(发出请求),此时服务员收到信息过来点餐(服务器收到请求做出相应响应),此时服务员点完餐交给后厨做餐(服务器到数据库拿数据),后厨做完餐交给服务员给到客人用餐(一次客户端请求成功完成)
java服务器
:善于处理CPU密集型
:指的是客户端和服务器之间的请求复杂(因为java是多线程 相当于多个服务员(服务员1号,服务员2号…) 所以无须担心 如果请求过多只要花钱(多找服务员)增加服务器配置即可,而且在一次请求中一个服务员会负责整个请求到底
node服务器
:因为node是单线程 服务器中只有一个比较优秀的服务员(超级服务员)适用于I/O密集型
指的是服务器与数据库之间的请求复杂而CPU请求不复杂的处理 node适用于一些中小型企业(差钱),而且因为在所有请求中只有一个超级服务员,所以node服务器服务员在单独一次请求中不会一直等待结果,会异步解决其他请求,这也正是node异步的特点大型公司不差钱一般都是java服务器 因为node是单线程一旦服务器的超级服务员崩掉 就整体垮掉、而java服务器是多线程毁掉一个线程不会影响到其他线程
即node所谓成也单线程败也单线程
学习视频链接:https://www.bilibili.com/video/BV144411S7W7?p=3
3.Node.js的应用场景。
- Web 服务API。
- 服务器渲染页面