Node.js笔记整理
是不是在看其他的教程或者文档都比较乏味,本篇文章我们就是随意一点的聊聊node,话不多说,这就开始吧!
什么是node.js
这里跟大家说一下什么是nodejs
总结起来三点:
- 编写高性能网络服务器的JavaScript工具包(用js开发服务端程序)
- 单线程、异步、事件驱动
- 特点:快,耗内存多
我们先看看PHP的运行机制
PHP本身不支持多线程,但是比如所它所用的服务器,Apache,它是支持多线程的
并发的访问服务区,到线程池里取线程
这个线程可能会读数据库,上传,或者其他操作,用完线程就恢复,等待其他调用
现在来看一下node.js的运行机制
node是单线程的,但是这样会导致效率低,它是通过异步的操作,给你分配一块儿内存,好了,你去操作吧,操作好了在说。
就像医院的分诊台,分诊台的护士小姐姐是不管看你的病的哦!
这样的优势就是,可以达到百万级的访问量,瞬间就完事儿
但是他站内存大啊,网上有一个测试,1M的连接量,消耗了16GB的内存(在没有优化的情况下)
这内存的问题其实就是用钱来解决的问题就都不是问题了
PHP面试常见的一个问题:
高并发,和大数据量的处理方式,如何优化性能
比如优化图片,优化性能,这与node的运行机制是完全不同的
比如,Java、PHP,在执行5步的时候
1
2
3 的时候去查询数据库去了,查完后回调方法,执行下面的代码
4
5
这就是基于事件的驱动
6
7
要学习node,就要把原来的PHP摒弃掉
在nodejs里面,提到了一个async(异步的)流程控制
要习惯这种模式 才能学好node
行了,写的都是啥啊,正式点了儿┗|`O′|┛ 嗷~~
node.js vs php
它们其实不是竞争关系,说是互补关系,就凭我这么多年的开发经验,node就是在抢php的饭碗呢。。。
优点:
性能高,(机制问题)
node的性能是真的高,当然的要是php优化好的话,也能跟node比一比吧开发效率高,(省不少优化的事儿)
开发效率高,网上有一句话,说一个node程序员能抵得上10个php的程序员,这个当然有点儿夸张了,比如你要是都写一个注册登录页面的话node和php其实是差不了多少的,主要在优化上,就是在大量的高并发,承受大量用户的访问。
- 应用范围广(可以开发桌面系统,electron框架)
electron对xp系统是不支持的,像socket服务区做的都比php好
node缺点也有:
- 新、人少,招聘程序员的成本问题
- 中间件少
php的中间件是非常多的,但是nodejs是几乎没有,你要是做,就要自己写,就也算是新的一个缺点吧 - IDE不完善
集成开发环境能够影响开发的效率吧
自动生成代码工具,没有几个
就有个orm
node.js 的劣势和解决方案(总之就是没有缺点)
- 默认不支持多核,但是cluster可以解决
- 默认不支持服务器集群,node-http-proxy可以解决
- 使用nginx做负载均衡,静态的有nginx处理,动态的有node.js处理
- forever或者node-cluster实现灾难恢复
学习的框架给你推荐,拿走不谢!
- 比较热门的包括: express、koa、Hapi
- 以及express基础之上的sails
- express:完善、稳定、文档全、社区大
- koa:超前,正在完善中
- Hapi:复杂(一个简单的helloworld,到要做很多堆彻),
适合复杂的大型项目