利用n工具轻松管理Node.js的版本


Posted in Javascript onApril 21, 2017

前言

相信对于学习Node.js的小伙伴们都知道,现在 Node 的版本更新很快,目前最新稳定版已经更新到 v7.6.0 了,而生产环境一般选择使用 LTS(Long-term Support)版本,目前最新的是 v6.10.0。

LTS本地下载:点击这里

新版的 Node 7.x.x 有非常有用的更新,那就是支持了 --harmony-async-await。这样就不用依赖 babel 来使用 async/await 特性了。

但是,如何让 7.x.x 和 LTS 的 6.x.x 并存呢?就需要用 Node 版本管理工具了。

之前常用的 Node 版本管理工具是 nvm,这是一个 shell 工具,能够比较方便地切换 Node 版本。

nvm本地下载:点击这里

不过今天我要介绍给大家的是另一款更简单好用的 Node 版本管理工具,它本身是一个 Node 模块,叫做 n,它是由 TJ 大大开发的

n 本地下载:点击这里

强调简单化的版本管理工具:

Node.js version management: no subshells, no profile setup, no convoluted API, just simple.

安装 n

要安装 n 非常简单,它本身是一个 NPM 模块,因此:

npm -g install n

使用和设置

要使用 n 安装特定版本的 node,只需要如下命令:

n stable #安装最新的稳定版
n lts #安装最新的 LTS 版
n 6.9.0 #安装特定的 v6.9.0 版本

安装完成多个版本后,直接输入不带参数的 n 命令,会出现一个已安装版本的列表:

利用n工具轻松管理Node.js的版本

用键盘上下键选择版本,然后回车,就可以切换默认 Node 版本。

直接启动不同版本的 Node

假如我们将默认的 Node 版本设置为 6.10.0 了,而我们要使用 7.6.0 启动某个应用,也非常简单,只需要:

n use 7.6.0 index.js

于是,我们可以这么用:

async.js

'use strict'

let randomDelay = () => new Promise(function(resolve){
 var delay = Math.round(Math.random() * 1000);
 setTimeout(function(){
 console.log('delay ' + delay + ' ms');
 resolve(delay);
 }, delay);
});

async function main(){
 await Promise.all([randomDelay(), randomDelay()]);
 console.log('pass');
 await randomDelay();
}

main();
n use 7.6.0 async.js

你会看到类似下面这样的输出结果,说明我们不需要 babel,直接可以用 Node 7.6.0 支持 async/await 了。

delay 252 ms
delay 964 ms
pass
delay 536 ms

最后,我们可以创建一个快捷的命令:

echo alias node7="\"n use 7.6.0 --harmony-async-await\"" >> ~/.bashrc
source ~/.bashrc

这样我们就可以愉快地使用 node v7.x.x 运行我们的 js 了:

node7 async.js

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
div失去焦点事件实现思路
Apr 22 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
javascript搜索框效果实现方法
May 14 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
微信小程序动态设置图片大小的方法
Nov 21 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 Javascript
基于jQuery实现文字打印动态效果
Apr 21 #jQuery
ES6新特性三: Generator(生成器)函数详解
Apr 21 #Javascript
Cookies 和 Session的详解及区别
Apr 21 #Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 #Javascript
原生javascript实现分页效果
Apr 21 #Javascript
微信小程序 跳转方式总结
Apr 20 #Javascript
微信小程序 setData的使用方法详解
Apr 20 #Javascript
You might like
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
php flush类输出缓冲剖析
2008/10/19 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
json数据的列循环示例
2013/09/06 Javascript
jQuery实现跨域
2015/02/03 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
HTML的select控件美化
2017/03/27 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python如何爬取个性签名
2018/06/19 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
美国性感内衣店:Yandy
2018/06/12 全球购物
会计自荐书
2013/12/02 职场文书
庆七一宣传标语
2014/10/08 职场文书
培训督导岗位职责
2015/04/10 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL