做口碑最好的专业HTML5全栈前端培训机构
最新开班:北京:2019年04月28日  广州:2019年04月22日 火热报名中!   全国咨询热线:400-089-1708
首页 > 爱前端新闻
爱前端04月28日全栈大前端训练营火热报名中,课程涵盖Node.js、Angular、React、Vue、微信小程序等时下最流行的前端技术!培养年薪30万工程师!报名咨询QQ: 28525152242852515226。咨询电话:4000891708。点击查看前端学习路线

NodeJS安装及简要介绍

2017-11-03 分类:技术交流 浏览:234

一、nodeJS简介

Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端。与PHP、JSP等相比,Node.js跳过了Apache、Nginx、IIS等HTTP服务器,它自己不用建设在任何服务器软件之上。Node.js的许多设计理念与经典架构(LAMP)有着很大的不同,可以提供强大的伸缩能力。

Node.js可以在任何操作系统上安装,底层都是Chrome V8引擎,使用C++开发的。

下载地址:https://nodejs.org/en/download/

二、nodejs的安装

下载之后,如何安装?双击:

我们安装的是msi这样格式的安装包,它是microsoft installer,微软安装器这么一个格式。

下一步、下一步进行安装。

注意安装路径不能有中文,所有的设置不要更改,直接下一步即可。

此时如何证明自己安装好了呢?

我们需要打开系统的CMD命令行窗口,CMD就是commond的简写,表示命令。类似Linux、DOS系统使用命令来操作系统这么一个工具。

按windows + R, 打开运行窗口:

此时就会打开这么一个黑底白字的窗口,我们叫做CMD窗口:

此时输入这个命令,就可以查看我们安装的nodejs的版本号:

$ node -v

注意$符号是Linux系统中(后面会学习)命令行中普通用户的表示符号,注意,我们输入的时候不要输入$,这里只是一个表示符号。

输入→node -v,cmd中显示v6.8.1,表示我们成功安装了nodejs的6.8.1版本

三、nodejs的哲学

我们先说说异步I/O:绝大多数的网站I/O是非常多的,I就是input数据的读取,O就是Output数据的写入,但是I/O的时候CPU是命令磁盘去做事情,此时CPU自己就闲置了。

示意图:

此时磁盘就特别忙,CPU就歇着了:

上图这种模式叫做同步I/O。

同步(synchronous):当系统遇见了一个需要耗费大量时间的事情的时候,选择死等。

异步(Asynchronous):当系统遇见了一个需要耗费大量时间的事情的时候,不死等,先做后面的事情,耗时事情做完之后,执行回调函数。

在2006年左右Ryan Dahl眼前的世界是这样的,我们用PHP代码举例:

2008年Google发明了Chrome浏览器,使用了V8引擎来解析JS程序,非常的快。并且V8引擎性能好、都是异步I/O,闭包特性方便。Ryan Dahl就把V8移植到了服务器端。

我们写一段js程序,就是01.js案例:

结果:

此时真的是先输出5050,然后输出哈哈。此时可以证明读取test.txt文件是异步的,CPU命令磁盘驱动器工作之后,CPU自己去执行了后面的语句。等到I/O结束,执行回调函数。

这里有一个坑:

一定注意要先用cd命令切换盘符:

$ cd c:\node_study\day1

然后node

$ node 01.js

严禁使用绝对路径拖拽!因为fs读取文件的时候,是相对于光标位置来读取的。

这就是Node.js的哲学:是一个专注于实现高性能Web服务器优化的专家,几经探索,几经挫折后,遇到V8而诞生的项目。

Node.js解决性能问题使用非常极端的思想:与其一堆服务员闲着,还不如一个服务员往死里用。

四、nodejs的版本

自2009年诞生以来,Node.js的版本号,一直就是0.×.×。Node.js向下兼容做的非常好,所有的高版本,会deprecate(建议放弃)一些老版本的API,但不会完全不支持。

2014年12月,多位重量级Node.js开发者不满Joyent对Node.js的管理,自立门户创建了io.js。io.js的发展速度非常快,先是于2015年1月份发布了1.0版本,并且很快就达到了2.0版本,社区非常活跃。但io.js社区很快又宣布,这两个项目将合并到Node基金会下,并暂时由“Node.js和io.js核心技术团队联合监督”运营。

在Node.js和io.js首次融合的4.0.0版本中,开发者们可以看到其对ES6特性的扩展支持,并且大多数都是默认启用的,比如:classes、typed arrays、generators、Promises、Symbols、collections、arrow functions、block scoping)、template strings等等。

分享到: