0

Node.js的安装配置

谁适合阅读本教程?

如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择。

Node.js 是运行在服务端的 JavaScript,如果你熟悉Javascript,那么你将会很容易的学会Node.js。

当然,如果你是后端程序员,想部署一些高性能的服务,那么学习Node.js也是一个非常好的选择。


学习本教程前你需要了解

在继续本教程之前,你应该了解一些基本的计算机编程术语。如果你学习过Javascript,PHP,Java等编程语言,将有助于你更快的了解Node.js编程。
 


Node.js 安装配置

本章节小编将向大家介绍在Mac系统上安装Node.js的方法。安装教程以Node.js v8.12.0 LTS(长期支持版本)版本为例。

Node.js安装包及源码下载地址为:https://nodejs.org/en/download/, 页面打开内容如下:



你可以根据不同平台系统选择你需要的Node.js安装包,本篇文章将介绍如何在Mac上安装Node.js。
Node.js 历史版本下载地址:https://nodejs.org/dist/

接下来介绍Mac OS 上具体安装步骤

可以通过以下两种方式在 Mac OS 上来安装 node:

1、在官方下载网站下载 pkg 安装包,直接点击安装即可。

2、使用 brew 命令来安装:
brew install node

接下来详细介绍这两种方式的安装过程。
 


第一种安装方式

官方下载网站下载 pkg 安装包,

双击下载好的安装包,按步骤执行即可,安装过程如下

点击继续,

弹出小窗口中点击“同意”按钮

接下来,没什么可说的,点“继续”

点击“安装”按钮,如下图

选择安装磁盘,输入用户密码,确认安装身份

输入用户密码,确认安装身份

等待安装过程......

等待Node.js安装过程

最后一步,安装完毕

Node.js安装完毕

安装完毕后,打开Mac系统的终端工具,命令行中输入node -v 命令:


如果出现上图所示,类似v8.12.0版本号信息,恭喜你,安装成功。

 


第二种安装方法

使用 brew 命令来安装:
brew install node

这种方法很简单,只用在命令行输入一条brew命令即可。如果运行顺利,会看到类似下面内容(根据Mac系统brew版本不同,内容上有些差异,不过关注重点下载内容就行)

bogon:Music mac$ brew install node

Updating Homebrew...

==> Installing node

==> Downloading https://homebrew.bintray.com/bottles/node-10.10.0.sierra.bottle.

######################################################################## 100.0%

==> Pouring node-10.10.0.sierra.bottle.tar.gz

==> Caveats

==> Summary

 /usr/local/Cellar/node/10.10.0: 3,940 files, 49.4MB

==> Caveats

==> .....此处省略大概一千字

 

==> node

Bash completion has been installed to:

  /usr/local/etc/bash_completion.d


同样安装结束后在命令行输入 node -v ,安装成功,会显示node.js版本号,如下图:

 

bogon:Music mac$ node -v

v10.10.0
 

注意:这里显示的版本号是V10.10.0,如果使用brew下载Node.js,会默认下载最新版本,如果想指定版本下载,建议直接使用第一种方式,也相对直观。

提示:Mac系统下安装不同版本的Node.js,系统会自动覆盖为最后一次安装的版本。

安装成功,下面我们来写第一个Node.js程序,依然是经典的Hello World!

脚本模式

以下是我们的第一个Node.js程序:

console.log("Hello World");

保存该文件,文件名为 helloworld.js, 并通过 node命令来执行:

node helloworld.js

程序执行后,正常的话,就会在终端输出 Hello World。


交互模式

打开终端,键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果,如下图所示:




 

NodeJS的优缺点

优点:
1. 高并发(最重要的优点)

2. 适合I/O密集型应用

缺点:1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

2. 只支持单核CPU,不能充分利用CPU

3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

原因:单进程,单线程

解决方案:
(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

(2)开多个进程监听同一个端口,使用cluster模块;

4. 开源组件库质量参差不齐,更新快,向下不兼容

5. Debug不方便,错误没有stack trace

 适合NodeJS的场景

1. RESTful API

这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找 一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。

2. 统一Web应用的UI层

目前MVC的架构,在某种意义上来说,Web开发有两个UI层,一个是在浏览器里面我们最终看到的,另一个在server端,负责生成和拼接页面。

不讨论这种架构是好是坏,但是有另外一种实践,面向服务的架构,更好的做前后端的依赖分离。如果所有的关键业务逻辑都封装成REST调用,就意味着在上层 只需要考虑如何用这些REST接口构建具体的应用。那些后端程序员们根本不操心具体数据是如何从一个页面传递到另一个页面的,他们也不用管用户数据更新是 通过Ajax异步获取的还是通过刷新页面。

3. 大量Ajax请求的应用

例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。  总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。