一、node.js
有个叫Ryan Dahl的歪果仁,他的工作是用C/C++写高性能Web服务。对于高性能,异步IO、事件驱动是基本原则,用C/C++写就太痛苦了,于是这位仁兄开始设想用高级语言开发Web服务。他评估了很多种高级语言,发现很多语言虽然同时提供了同步IO和异步IO,但是开发人员一旦用了同步IO,他们就再也懒得写异步IO了,所以Ryan最终瞄向了JavaScript。因为JavaScript是单线程执行,根本不能进行同步IO操作,所以JavaScript的这一“缺陷”导致了它只能使用异步IO。而运行引擎就使用现成的V8。于是在2009年,Ryan正式推出了基于JavaScript语言和V8引擎的开源Web服务器项目,命名为Node.js。虽然名字很土,但是,Node第一次把JavaScript带入到后端服务器开发,加上世界上已经有无数的JavaScript开发人员,所以Node一下子就火了起来。
简单的说,Node.js就是运行在服务端的JavaScript,是一个基于Chrome JavaScript(Google的V8引擎,执行Javascript的速度非常快,性能非常好)运行时建立的一个平台,是一个事件驱动I/O的服务端JavaScript环境,安装步骤自行百度(建议使用nvm进行安装和版本管理)。
二、nvm
nvm是Mac下的node.js版本管理工具,如果是管理Windows下的node.js,可以使用nvmw或nvm-windows 。
1、nvm安装步骤:
①在终端执行如下命令:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
②在~/.bash_profile内容最后添加如下内容:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
然后在当前用户家目录执行source .bash_profile;
③检测是否安装成,在终端执行如下命令,如果输出了 "nvm",代表已经安装成功。
command -v nvm
2、使用nvm管理node.js:
①查看所有已有的node.js版本
nvm ls-remote
②安装指定版本的node.js
nvm install vx.xx.xxx
③安装最新稳定版本的node.js
nvm install stable
④设置默认版本
nvm alias default vx.xx.xxx
⑤切换到指定版本
nvm use vx.xx.xxx
⑥查看当前的node.js版本
nvm current
⑦查看已安装的所有node.js的版本
nvm ls
三、npm
npm是node.js的包管理工具,随Node.js一起安装,常用命令有:
1>安装模块
npm install <Module Name> -g
参数-g表示全局安装,如果不加则为本地安装
2>查看已安装的所有模块
npm list -g
参数-g表示查看全局模块,如果不加则为本地模块
3>查看指定模块
npm list <Module Name> -g
参数-g表示查看全局的某个模块,如果不加则为本地模块,根据显示的信息可以找到该模块所在的目录。一般模块都会统一的放在node_modules目录下,在每个模块目录,都包含一个package.json文件,该文件中包含模块的相关信息。
4>卸载指定模块
npm uninstall <Module Name>
5>更新指定模块
npm update <Module Name>
6>搜索指定模块
npm search <Module Name>
7>npm项目初始化(会生成项目描述文件package.json)
npm init
8>npm添加用户
npm adduser
9>npm运行package.json中配置的命令
npm run xxx
10>npm发布模块
npm publish
四、REPL(Read Eval Print Loop:交互式解释器)
安装Node.js之后,在命令行输入node即可进入REPL,连续两次ctrl+c或ctrl+d即可退出。在该解释器中可以:
1、输入数字后回车,直接打印该数字;
2、支持多行表达式,即如果出现do{}while()之类的换行表达式,解释器是支持换行的,每行的换行行首以“...”开始;
3、下划线可以获取上一个表达式的运算结果;
常用命令有:
1、向上/向下键:查看输入的历史命令;
2、Tab键:列出当前可支持的命令;
3、.break/.clear:退出多行表达式;
4、.save filename:保存当前的Node REPL会话到指定文件;
5、.load filename:载入指定文件内容到当前Node REPL;
参考:
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501245426ad4b91f2b880464ba876a8e3043fc8ef000