Node.js的基本概念
Node.js是编写高性能网络服务器的Javascript工具包(用JS开发服务端程序)。
特点:单线程、异步、事件驱动;
举个Apache服务器运行方式的例子,比如线程池里面有150个线程,当有大量的并发产生的时候(有大量的访问者涌入去访问服务器),会去线程池里面去取线程,其中线程操作有可能是读库或者写入等,线程执行完毕返回给客户端结果之后,线程会继续放回线程池,此时,线程又可以提供给其他人使用。
那么Node.js是单线程的,怎么提供服务呢?这个时候就引入了其另外一个特点“异步”,比如这个用户的操作是读库,那么单独开辟一块内存区域给他,另一个用户是写入,再开辟一块单独的内存区域给他,这个操作相当于医院里面的“分诊”概念。
这种方式非常快速,但同时内存耗用多,网上有一个百万级的并发测试,未优化的情况下1M的连接消耗了16G的内存。
Node.js 相较于 PHP
优点 |
缺点 |
性能高 (机制问题) |
使用者少 |
开发效率高(优化方面) |
中间件少 |
应用范围更广(可以开发桌面系统,Electron框架) |
IDE不太完善 |
Node.js 目前的劣势及解决方案:
- 默认不支持多核,但可以用Cluster解决;
- 默认不支持服务器集群,但可以用Node-Http-Proxy解决;
- 使用Nginx做负载均衡,静态的由Nginx处理,动态的由Node.js处理;
- 可以用Forever或者Node-cluster实现灾难恢复;
常用的框架选择:
Express、koa、Hapi、Express基础之上的sails。
- Express:用的最多,完善,稳定,文档全,社区大;
- Koa:比较超前,稳定性差;
- Hapi:比较复杂,不适合初学者,适合大型复杂的项目;
Node.js的安装测试
下载地址:http://nodejs.cn/
这里我们测试下载Windows安装包(.msi)的64位版本。
一直下一步直至完成即可。
接着我们测试一下是否安装成功,打开CMD,键入“npm”。
可以发现当前安装的NPM版本是“6.14.8”,NODE版本是“14.9.0”。
测试输出“Hello,World”。
按住“Shift”键,鼠标右击,选择“在此处打开命令窗口”。