最近接了一个node项目,虽然最后顺利完成了,可是因为第一次实战,整个过程是赶出来的,许多地方只知其一;不知其二。如今项目结束了,就静下心来系统地学一学,理一理,读书不忘拿笔,既然读书了,固然就要记点东西。一方面:能帮助本身加深印象,更好的理解,另外一方面:能有幸帮助到别人也是不甚欢喜的。本人大部分的学习内容来自于如下书籍。javascript
Node.js不是JS应用、而是JS运行平台 --《深刻浅出Node.js》java
Node.js采用C++语言编写而成,是一个后端的Javascript的运行环境。它使用了Google的V8虚拟机(Google的Chrome浏览器使用的 JavaScript执行环境),来解释和执行JavaScript代码。node
基于事件驱动的异步I/O(非阻塞)git
线程在执行中若是遇到磁盘读写或网络通讯(统称为 I/O 操做), 一般要耗费较长的时间,这时操做系统会剥夺这个线程的 CPU 控制权,使其暂停执行,同时将资源让给其余的工做线程,这种线程调度方式称为阻塞。github
Node.js的设计思想中以事件驱动为核心的异步I/O(非阻塞)。全部的磁盘 I/O、网络通讯、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理数据库
Node.js 在执行的过程当中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每一个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。npm
支持的编程语言是javascript
Javascript的匿名函数和闭包特性很是适合事件驱动、异步编程。同时Javascript在动态语言中性能较好,再加上V8引擎也是同类的佼佼者,因此Node.js的性能也受益其中。编程
Node.js的安装方法很简单,直接上官网或者百度一个选择相应版本下载安装就行,就很少说了。安装完后能够经过输入 "node -v" 来测试是否成功安装。windows
tips: 工做中可能会须要多个node版本之间的相互切换,推荐使用nvm工具(but,暂不支持windows)后端
Nodejs自身提供了基本的模块。可是在这些基本模块上开发实际应用须要较多的工做,npm的存在解决了该问题,它是Nodejs的包管理器:
新版的nodejs已经集成了npm,因此不须要再进行安装操做。一样能够经过输入 "npm -v" 来测试是否成功安装。
至此,咱们的node开发环境就基本搭建完成了,咱们来开始实现第一个 Node.js 程序。打开你经常使用的文本编辑器,在其中输入:
console.log('Hello World');
将文件保存为 helloworld.js,打开终端,进入 helloworld.js 所在的目录,执行如下命令:
node helloworld.js
若是一切正常,你将会在终端中看到输出 Hello World
。