利用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 相关文章推荐
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
js原型链原理看图说明
Jul 07 Javascript
javascript break指定标签打破多层循环示例
Jan 20 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
Angular.JS中的指令引用template与指令当做属性详解
Mar 30 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 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生成二维码
2015/08/10 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
JS中数据结构之栈
2019/01/01 Javascript
python操作xml文件示例
2014/04/07 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
了解一下python内建模块collections
2020/09/07 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
优秀士兵先进事迹
2014/02/06 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
机械机修工岗位职责
2014/08/03 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
公司股东出资证明书
2014/11/01 职场文书
大学生个人总结范文
2015/02/15 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
大学入学感言
2015/08/01 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
在Docker容器中部署SQL Server
2022/04/11 Servers