如果对javascript有深入了解,那么建议进行node.js的开发,因为node.js是服务器端javascript的一个极其优秀的环境
你可以用javascript进行服务器端的开发,而不仅仅是进行浏览器端的开发。
说到nodejs,不得不说为什么nodejs能在服务器端开发中得到广泛的支持,这主要源于其处理问题的思路,他充分的利
用了事件驱动的模型,使得资源得到最大的利用。另外他采用javascript这门语言,我们知道javascript是单线程的,那么
这就为开发带来了便利,因为多线程的开发很容易出现各种问题。这种简单且效率较高的开发模式自然得到了广泛的关注。
那么到底nodejs是如何实现这种功能的呢?下图可以大致说明这一点。nodejs有一个单一的线程叫event loop线程,
所有请求以及同时传入的回调函数均发送至这一线程,该线程负责在 I/O执行完毕后,将结果返回给回调函
数。这里要注意的是 I/O 操作本身并不在该线程内执行,因为I/O不是nodejs该线程的一部分所以不会阻塞后
续请求。
也就是说,在单线程模式下,当然会出现堵塞,但这种堵塞不是因为I/O的读取引起,而是执行代码本身
引起,因为单线程一次只能处理单个代码。但是在I/O执行期间,我们不必等待I/O读取完毕后进行后续操作,
而是继续执行下面的代码。当I/O读取完毕并返回结果时,由于我们设置了回调函数,也即是在某个时间发生
时要执行的函数,如果此时线程空闲,那么就可以立即执行该函数,这就是事件驱动的机制。
nodejs利用事件驱动实现了单线程下的非堵塞,所以才能得到认可。