# nodejs编程环境搭建

Node.js发布于2009年5月，由Ryan Dahl开发，是一个基于Chrome V8引擎的JavaScript运行环境，使用了一个事件驱动、非阻塞式I/O模型，让JavaScript 运行在服务端的开发平台，它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。

在几年的时间里，Node.JS逐渐发展成一个成熟的开发平台，吸引了许多开发者。有许多大型高流量网站都采用Node.JS进行开发，此外，开发人员还可以使用它来开发一些快速移动Web框架。除了Web应用外，Node.JS也被应用在许多方面，本文盘点了Node.JS在其它方面所开发的十大令人神奇的项目，这些项目涉及到应用程序监控、媒体流、远程控制、桌面和移动应用等等。

## 基础环境

### 解释器

nodejs就是一个基于google的v8引擎的一个解释器。可以使用下面命令进行安装。

```Shell
sudo apt install nodejs
```

可以用通过以下命令验证安装是否成功：

```Shell
node -v
```

看到以下输出说明安装成功：

```Shell
v10.21.0
```

从源里下载的版本相对过低，可尝试下载安装包解压安装。
可参考下面链接进行安装。

[如何在deepin上部署nodejs开发环境](https://wiki.deepin.org/zh/如何在deepin上部署nodejs开发环境)

### 包管理工具

#### npm

npm是一个软件包管理器，主要进行JAVAScript的包管理。通过npm，我们可以很方便地进行JavaScript包的下载、升级，我们也可以把我们开发的JavaScript包共享给其他使用者。

#### cnpm

cnpm是一个完整 npmjs.org 镜像，你可以用此代替官方版本(只读)，由于npmjs.org的服务器在国外（即在“墙”外），国（墙）内开发者做项目的时候，很多“包”的下载速度极慢，在这种环境下阿里巴巴为了众多开发者的便捷便挺身而出推出了淘宝镜像（即cnpm），它把npm官方的“包”全部搬到国内，供广大开发者使用。

#### yarn

Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ， 它主要是为了弥补 npm 的一些缺陷而出现的。

#### pnpm

npm全称是performant npm ，意味“高性能的 npm”。pnpm由npm/yarn衍生而来，解决了npm/yarn内部潜在的bug，极大的优化了性能，扩展了使用场景。被誉为“最先进的包管理工具”

#### nvm

nvm全英文叫node.js version management，是一个Nodejs的版本管理工具。nvm和npm都是Node.js版本管理工具，为了解决Node.js各种版本存在不兼容现象，可以通过它可以安装和切换不同版本的Node.js。

## 开发工具

### vscode

vscode作为一个轻量的编辑器，安装nodejs相关插件可以进行nodejs的开发。

#### 插件

- Vetur —— 语法高亮、智能感知、Emmet等包含格式化功能， Alt+Shift+F （格式化全文），Ctrl+K Ctrl+F（格式化选中代码，两个Ctrl需要同时按着）
- EsLint —— 语法纠错
- Debugger for Chrome —— 映射vscode上的断点到chrome上，方便调试（配置有点麻烦，其实我没用这个）
- Auto Close Tag —— 自动闭合HTML/XML标签
- Auto Rename Tag —— 自动完成另一侧标签的同步修改
- JavaScript(ES6) code snippets —— ES6语法智能提示以及快速输入，除js外还支持.ts，.jsx，.tsx，.html，.vue，省去了配置其支持各种包含js代码文件的时间
- Path Intellisense —— 自动路劲补全
- HTML CSS Support —— 让 html 标签上写class 智能提示当前项目所支持的样式
- Live Server —— 一个具有实时加载功能的小型服务器，
- open in browser —— 把编辑的HTML文件等用浏览器打开，查看效果。

### WebStorm

WebStorm是作为JS开发IDE存在的，并且支持流行的Node.js以及JQuery等js框架。对JS的支持是非常强大的，有智能提示、断点调试、查看源码等等功能。但是非常占内存，如果是开发小型项目推荐使用vscode。

## 资源指南

### 官方文档

以下为Node.js的官方文档，全面地讲解Node.js的API，包括使用方法与相关概念。 每个章节分别介绍一个内置模块或高级概念。

[https://nodejs.org/dist/latest-v18.x/docs/api//](https://nodejs.org/dist/latest-v18.x/docs/api/)

### 中文文档

[Node.js API 中文文档](https://github.com/nodejscn/node-api-cn)
