是不是在看其他的教程或者文档都比较乏味,本篇文章我们就是随意一点的聊聊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,到要做很多堆彻),
    适合复杂的大型项目