博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node学习篇01
阅读量:6747 次
发布时间:2019-06-25

本文共 882 字,大约阅读时间需要 2 分钟。

1.诞生:

      Ryan Dahl 2009年3月宣布创建基于v8的轻量级库,5月发布初版

      最初基于linux系统,2011年7月发布windows版本

      2012年交给IsaacZ.Schlueter(npm包管理者和作者)

2.为何选择javascript:

      设计高性能web服务器的要点:事件驱动、非阻塞I/O

      事件驱动:javascript做两件事:操作DOM和操作BOM,什么时候干?需要干的时候干。什么时候需要干?事件被触发的时候。即在事件被触发之前,所有的结构被静态的呈现出来,在事件触发之后,动态的行为发生,重新产生新的静态结构,事件与状态构成了事件驱动开发的基本要素。

       非阻塞I/O:js单线程,通过回掉函数达到非阻塞的目的,非阻塞就是程序会一直按顺序执行,直到所有代码执行完毕,当遇到需要等待即异步函数的时候,直接跳过,等同步队列执行完,再来执行。

3.为什么叫node:

       开始起名为web.js,单纯作为web服务器使用,随着发展,构建了服务器,客户端,命令行工具等,发展为一个强制不共享任何资源的单线程、单进程的系统,为构建大型分布式应用提供基础设施,目标是构建快速的可伸缩的网络应用平台。通过通信协议构建许多node,每个node进程都是构建这个网络应用的一个节点。

4.对javascript的意义:

                                         Node与浏览器对比

        Node与浏览器运行机理相同,是浏览器在协议栈另一边的倒影。Node打破了javascript只能在浏览器中运行的局面,前后端环境统一,降低了前后端转换的代价。

5.特点:

      异步的I/O;同步io任务耗时是所有任务耗时之和,异步优势显而易见。

      事件与回掉函数;事件编程轻量级,松耦合,只关注事物点。

      单线程;不需要向多线程那样在意状态同步问题,不会有死锁存在

                  缺点:无法利用多核cpu,错误引起整个应用退出,

                            大量计算调用cpu会导致无法异步调用io(child_process)

        跨平台:基于libuv实现跨平台

转载于:https://juejin.im/post/5cf67dfdf265da1bc14b160d

你可能感兴趣的文章
菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划
查看>>
让ubuntu开启ssh服务以及让vi/vim正常使用方向键与退格键
查看>>
hdu1325 并查集
查看>>
简易时间序列分析的方法总结(R实现)
查看>>
10.两个链表的交叉
查看>>
dynamic 是什么
查看>>
学习日记0829 IP协议 子网掩码 端口TCP协议的三次握手 四次挥手 套接字socket
查看>>
jQuery中json对象与json字符串互换
查看>>
十四、MySQL UPDATE 查询
查看>>
CentOS系统通过PXE实现批量无人值守安装
查看>>
Java线程--interrupt join yield setDaemon常用方法的使用
查看>>
iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo
查看>>
web -- Navigator.vibrate(); 使设备(有振动硬件)产生有频率的振动
查看>>
XMR恶意挖矿案例简析
查看>>
java基础 final 修饰成员变量 只能赋值一次问题
查看>>
在我的S5pv210开发板上安装busybox并体验busybox devmem 命令的强大功能
查看>>
网络虚拟化问题小记
查看>>
虚拟机桥接网络配置(Centos )
查看>>
【Linux】鸟哥的Linux私房菜基础学习篇整理(一)
查看>>
接口类型的数组对象的逐个赋值与调用方法(开关)
查看>>