利用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 相关文章推荐
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
js 设置缓存及获取设置的缓存
May 08 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
React-Native 组件之 Modal的使用详解
Aug 08 Javascript
解决vue build打包之后首页白屏的问题
Mar 06 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
Apr 22 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 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 a simple smtp class
2007/11/26 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python常用正则表达式符号浅析
2014/08/13 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
python插入排序算法实例分析
2015/07/03 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
Weblogic和WebSphere不同特点
2012/05/09 面试题
简短证婚人证婚词
2014/01/09 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
Jsonp劫持学习
2021/04/01 PHP
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS