可以从官网直接下载或者使用brew或者wget下载工具进行下载,但是更加推荐nvm管理和安装我们的node,
此处我们就来介绍nvm来管理我们的node
nvm 是 Node.js 的版本管理器 (version manager),可在同一台主机上安裝多个版本的 Node.js 环境,因為不同專案可能會使用不同的 Node.js 版本,那就需要通过一個版本管理器來切换不同的 Node.js 版本。
可用 curl 或 wget 指令使用安装脚本安装或更新 nvm:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
或
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
此安装脚本 nvm repo clone 到 ~/.nvm,并且将 source line 新增至你的 profile 设定 ( ~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc ):
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
❗️注意这里应该将这串代码写入我们( ~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc )
文件中
// 安装
nvm install node
// 查看本地node可用版本
nvm ls
// 切换
nvm use v10.6.3
一句话说介绍node:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境
一门新语言
,Node是"基于V8创建一个轻量级的Web服务器并提供一套库",能够使得javascript脱离浏览器运行,简单理解就是使javascript具有服务端的能力Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效
❗️I/O是input/output的意思,就是输入输出操作
传统的服务器语言大多是多线程、阻塞式 I/O。这也是 Node 与众不同的地方,对于传统的服务器语言,在与用户建立连接时,每一个连接都是一个线程。当有十万个用户连接时,服务器上就会有十万个线程。而阻塞式 I/O 是指,当一个线程在执行 I/O 操作时,这个线程会阻塞,等待 I/O 操作完成后继续执行,而node由于单线程的缘故,采用非阻塞I/0这种模型机制,但是性能依旧高效
Nodejs中充斥的大量的
异步
,事件循环是异步实现的核心,它与浏览器中的执行模型基本保持了一致,而事件循环则是事件驱动里的概念
❗️Nodejs的异步是通过事件驱动模型去实现,而其核心的EventEmitter类
也是实现事件驱动不可或缺的模块,我们在后续会重点分析并进行实现
javascript在最初设计时设计成了单线程,为什么不是多线程呢?如果多个线程同时操作DOM那岂不会很混乱?这里所谓的单线程指的是主线程是单线程的,所以在Node中主线程依旧是单线程的。
同步和异步关注的是消息通知机制
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
同步异步取决于
被调用者
,阻塞非阻塞取决于调用者
注意发起一个操作时候,并不是
单方面考虑就行
,而是考虑双方的场景
也就是调用者和被调用者,抓住这点就很好理解他们的区别了
上述我们简单了理解Node的概念以及他重要的两个特征,理解了这一章节后,后续有助于我们理解
事件驱动模型
、Nodejs的Event Loop
等等概念
最近花了点时间把笔记整理到语雀上了,方便同学们阅读:语雀笔记入口:https://www.yuque.com/wanggangfeng/bsp75t/inu4gw