老早就想读这本书了,可是因为这样那样的原因,总归是耽搁了,前几天一直在纠结毕业设计用什么语言来实现后端逻辑代码的问题,通过一周时间的痛苦挣扎,选择了node,于是就又开始学习node了,希望写随笔这种形式能够逼着我把node好好研究一遍。
首篇文章主要讲述该书的第一个章节,因为是读书笔记,内容可能不会很全面,大概只会写下我认为重要的东西,一些无关紧要的内容可能略过。本篇文章主要从两个方面来介绍node,分别是:node的特点以及node的使用场景。
(1)node的特点:
a)异步I/O:异步I/O对前端来说应该相对熟悉一些,首先看下面一个ajax请求的例子:
$.ajax({ url:'www.baidu.com', type:'post', data:'data', success:function(){ console.log('请求完成'); } }) console.log('开始请求')
执行完的结果是:开始请求
请求完成
当请求发出后,js单线程即不等待请求结果,继续执行下边的代码,当请求完成后,success函数被触发,执行里面的代码,即异步
b)回调函数:见上一条ajax实例,sucess即为该次请求成功之后的回调函数,请求成功之后调用
c)单线程:总所周知,js是单线程的,在浏览器端如果线程用来长时间执行js代码,就会阻碍ui的渲染过程,h5定义一个新的api web works来解决这个问题。与之类似,在服务器 端,如果js的单线程用来执行cpu密集型业务,也会阻碍回调函数的执行以及新事件的绑定,于是node作者采用了child_process子进程来解决这个问题
d)跨平台:在windows和*nix系统上都能运行node,因为node与操作系统之间构建了一个中间层libuv来顺利兼容不同的操作系统
(2)node的应用场景:
a)I/O密集型:基于事件驱动的回调函数无阻塞模式,性能提高
b)分布式:此处没有研究,暂时应该用不到,忽略之!