深入Node之初识
0前言
陆续的用node已经一年多了,已经用node写了几个的项目,也该是总结node学习的过程了
1.node是啥?
node.js是一使用javascript作为开发语言,运行在服务器端的web服务器,也就是说是 javascript的服务端运行环境,这么说其实还不严谨。node除了实现了js的运行环*,还用c++实现了内置的库
2.与浏览器端的js运行环境的区别
javascript是一种解释型脚本语言,需要运行时环境来执行代码,而这个运行时环境就是google开发的v8引擎。不管是浏览器端的js还是还是node环境的js执行环境,都是基于v8引擎实现的。
下图可以看到node环境和浏览器环境的结构。可以看到,node中除了不需要页面解析引擎外,与浏览器的区别就在于中间层的实现
3.node与其他编程语言相比有哪些特点
3.1 单线程
javascript在浏览器中运行时,js运行和页面渲染共用同一线程,也就是说js运行和页面渲染是相互阻塞的,这也证明了,在前端实践中需要把js放在最后执行的原因。
单线程编程模型的好处是,不用担心内存状态的同步问题和程序上下文切换时的开销
3.2异步i/o
在浏览器编程中,需要和服务端打交道时,因为网络存在波动无法准确的预知响应时间,所以只能采用事件加回调的方式来实现,如ajax的请求的实现,只有当网络响应时才会执行注册的回调函数。如下图node的文件读取操作
3.3跨平台
node使用libuv库实现了跨平台运行的特性,libuv封装了多平的系统调用,抹平了系统之间的差异,在程序调用成抽象成统一的调用接口,使node程序能够在多平台实现相同的执行效果
4.node适合做什么工作
i/o密集型应用,如常见的web应用,实时通讯服务器等。由于node使用js的事件+回调的机制来实现io访问,并且不会阻塞io调用
中间层应用,作为网关代理层转发、代理、整合已有的服务和资源,快速实现产品上线、版本迭代,实现公司业务的“小步快跑”
上一篇: 用PHP实现WEB动态网页静态化
下一篇: 路由故障:软硬件造成的集线器故障