利用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 相关文章推荐
深入理解JavaScript定时机制
Oct 29 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
jQuery中after的两种用法实例
Jul 03 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
JavaScript数据结构之二叉树的查找算法示例
Apr 13 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
微信小程序下拉菜单效果的实例代码
May 14 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中的Class的几点个人看法
2006/10/09 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python 功能和特点(新手必学)
2015/12/30 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
python批量修改文件名的示例
2020/09/27 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
C++面试题目
2013/06/25 面试题
安全责任书范本
2014/04/15 职场文书
铁路安全反思材料
2014/12/24 职场文书
档案接收函格式
2015/01/30 职场文书
保安辞职信范文
2015/02/28 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书