利用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 相关文章推荐
Jquery性能优化详解
May 15 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
教你使用javascript简单写一个页面模板引擎
May 05 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
浅谈Express异步进化史
Sep 09 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
vue-cli axios请求方式及跨域处理问题
Mar 28 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
微信小程序自定义toast的实现代码
Nov 16 Javascript
Vue 组件注册实例详解
Feb 23 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
Mar 05 Javascript
Vue实现购物车详情页面的方法
Aug 20 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
php中mysql操作buffer用法详解
2015/03/19 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
Angular通过指令动态添加组件问题
2018/07/09 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
python集合用法实例分析
2015/05/30 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python自动抢红包教程详解
2019/06/11 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
大学专科求职信
2014/07/02 职场文书
教师个人学习总结
2015/02/11 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
Python包argparse模块常用方法
2021/06/04 Python
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL