https://blog.51cto.com/dapengtalk/1886579
你了解js的运行原理吗?
js------解释性语言,他的解释器有多种,不同的浏览器采用不同的js解释器,
Chrome : webkit/blink : V8
FireFox: Gecko : SpiderMonkey
Safari : webkit : JavaScriptCore
IE : Trident : Chakra
node.js就是个不错的东西,他能想到把js拿出来做服务端,那就要一个脱离与浏览器的解释器,所以他就选择了这个v8解释器
so,解释性的语言是脱离不了解释器的,so,你想拿js做服务端,你就必须要一个解释器node,实际都是充当的虚拟机的功能
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
js和其他的解释型语言有什么不一样呢?------单线程------我认为这种语言之间的单线程或者多线程本质上呢是这门语言的虚拟机的机制
Node.js 特点
1、单线程
一个线程,一个链接,在Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了。(多线程服务容易造成并发安全性的问题)
一个线程,多个链接,Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。
另外,单线程带来的好处,操作系统完全不再有线程创建、销毁的时间开销。
坏处,就是一个用户造成了线程的崩溃,整个服务都崩溃了,其他人也崩溃了。
node的单线程是指服务的单线程,但io是多线程的,而其他的语言则是服务的多线程。。。。。。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用js做服务端的解释性语言,必须得理解node的运行原理,掌握js是如何运行的?在学一下api库,第三方库以及框架,一个node轻松搞定
js技术体系=各种硬件平台的node虚拟机+api模块+第三方框架
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.node虚拟机,运行原理网上的不太好
2.api这里看一下
node.js所有依赖项
Node.js 依赖于以下一些依赖项,这样它才能正常工作。