博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js 7.0安装体验和示例代码解读
阅读量:5944 次
发布时间:2019-06-19

本文共 1863 字,大约阅读时间需要 6 分钟。

hot3.png

Node.js 7.0安装体验和示例代码解读

菜神 大晚上不睡觉,放毒: 稍加整理,以便阅读

安装Node.js v7

很早之前

第一步配置环境变量,指定nvm使用的v7 mirror,这是因为默认的nvm mirror指向的是 ls-remote是查不到v7的。

在terminal中执行,放在永久环境变量中不太必要

$ NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/test

然后查看一下远端版本

$ nvm ls-remote         v4.6.1         v6.7.0         v7.0.0

然后就开始Node v7吧

$ nvm install 7$ nvm use 7

我在安装的时候没有成功,后来是

如果上面的不可用,可以参考评论中的

示例代码解读

定义class

// An example class which generates a hello world greetingclass Demo {  async greeting() {    const h = await this.world();    return h;  }  world() {    return Promise.resolve('hello world');  }}

在promise时代,要做到每个流程函数都返回promise,然后再组装,这称为广义的promisify。现在换成async函数,主要是取决于await能组合的2种做法

  • 完全使用async函数
  • 使用返回promise的流程函数

本例中,就非常典型,在async函数greeting里通过await来执行this上下文中的world函数,很明显world是返回Promise的函数。

我之前也说过promise的重要性,几乎贯穿所有异步流程控制中。async/await时代的前期,它还是主力,无论是已有项目-知识迁移,还是组装和简化的便利性。

在Koa 2.x里使用

// Import Koa v2 dependencyconst Koa = require('koa');// Initialize Demo class instanceconst demo = new Demo();// Initialize Koa v2 instanceconst app = new Koa();const port = 3000;// uses async arrow functionsapp.use(async (ctx, next) => {  try {    await next(); // wait until we execute the next function down the chain, then continue;  } catch (err) {    ctx.body = { message: err.message };    ctx.status = err.status || 500;  }});// Set up a routeapp.use(async ctx => {  const retval = await demo.greeting();  ctx.body = retval;});// Start listening on specified portapp.listen(port, function() {  console.log("listening on port", port);});// Start the app with "node --harmony-async-await" flag, and go to http://localhost:3000

Koa 2.x的简单代码就不解释了,有疑问可以参见

执行

$ node -v; node --harmony-async-await index.js

很明显,是通过--harmony-async-await这个flag来执行的。也就是说还没有变成内置功能。这让我们不禁想起当年generator的情况,从0.10,0.12····4.x。也就是说,变成内置还要很长时间

好在,我们已经能够体验了,老雷说:“这几个月js发展真快啊”,起来嗨~

转载于:https://my.oschina.net/nodeonly/blog/760436

你可能感兴趣的文章
Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
查看>>
CentOS使用chkconfig增加开机服务提示service xxx does not support chkconfig的问题解决
查看>>
微服务+:服务契约治理
查看>>
save
查看>>
Android DrawLayout + ListView 的使用(一)
查看>>
clear session on close of browser jsp
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
已释放的栈内存
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>