在node中使用es7

2023-11-13

今天学写了体验异步的终极解决方案-ES7的Async/Await这篇文章,发现作者是用 es7 的语法写 node。

所以顺便学习了一下如何在 node 中使用 es7 的语法,记录一下。

首先安装 babel-cli

yarn add babel-cli --dev

安装 presets

yarn add babel-preset-es2015 babel-preset-stage-2

新建 index.js (代码为上面链接中的例子)

import fs from 'fs';
import path from 'path';
import request from 'request';

var movieDir = __dirname + '/movies',
    exts     = ['.mkv', '.avi', '.mp4', '.rm', '.rmvb', '.wmv'];

// 读取文件列表
var readFiles = function () {
    return new Promise(function (resolve, reject) {
        fs.readdir(movieDir, function (err, files) {
            resolve(files.filter((v) => exts.includes(path.parse(v).ext)));
        });
    });
};

// 获取海报
var getPoster = function (movieName) {
    let url = `https://api.douban.com/v2/movie/search?q=${encodeURI(movieName)}`;

    return new Promise(function (resolve, reject) {
        request({url: url, json: true}, function (error, response, body) {
            if (error) return reject(error);

            resolve(body.subjects[0].images.large);
        })
    });
};

// 保存海报
var savePoster = function (movieName, url) {
    request.get(url).pipe(fs.createWriteStream(path.join(movieDir, movieName + '.jpg')));
};


(async () => {
    let files = await readFiles();

    // await只能使用在原生语法
    for (var file of files) {
        let name = path.parse(file).name;

        console.log(`正在获取【${name}】的海报`);
        savePoster(name, await getPoster(name));
    }

    console.log('=== 获取海报完成 ===');
})();

然后修改 package.json 文件

"scripts": {
"start": "babel-node index.js --presets es2015,stage-2"
},

最后,运行 npm start 即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在node中使用es7 的相关文章

随机推荐

  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线
  • Myeclipse Bule Edition 添加SVN的方法

    今天 因项目需要在Myeclipse中添加svn 添加svn的方法可能有很多种 比较简单的自然是自动安装 这里离介绍一下手动的安装方法 1 需要下载一个subeclipse site的压缩包 网上有得下 subeclipse site 1
  • nginx check健康检查

    nginx利用第三方模块nginx upstream check module来检查后端服务器的健康情况 大家都知道 前段nginx做反代 如果后端服务器宕掉的话 nginx是不能把这台realserver提出upstream的 所以还会有
  • 高性能 Jsonpath 框架,Snack3 3.2.29 发布

    Snack3 一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明 及 Xml dom 一切都是 Node 的设计 其下一切数据都以ONode表示 ONode也即 One node 之意 代表任何类型
  • VUE项目性能优化,v-if,v-for,props,computed,watch......

    VUE项目性能优化 v if v for props computed watch 下个星期就要用vue开发了 就未雨绸缪的搜集了一些干货 整理出来 1 解决v for和v if优先级问题 以及通过计算属性来做数据筛选
  • Dynamics 365 DevOps CI/CD之WebResource

    对于D365自身的发布 简单点来说就是Solution的发布 复杂一些会涉及周边集成接口等一系列的发布 如果是单纯的Solution的发布的Azure DevOps商店里有很多工具 比如Power DevOps Tools 这个我之前也有博
  • Qt之QTableView显示鼠标悬浮下的项的信息

    业务上遇到一些需求 某个需求是当鼠标移动到QTableView的item上时 显示该item的某些信息 首先想到的思路就是鼠标悬浮事件 即安装QTableView的事件过滤器 然后在eventFilter进行判断即可 实现很简单 主要在针对
  • 段式存储管理、段页式存储管理

    分页与分段的区别 1 页是信息的物理单位 是系统管理的需要而不是用户的需要 而段是信息的逻辑单位 分段是为了更好地满足用户的需要 2 页的大小固定且由系统决定 一个系统只能有一种大小的页面 而段的长度不固定 由用户所编写的程序决定 3 分页
  • WinEdt 31天试用期到期解决方案

    WinEdt 在试用期过后 会频繁出现 WinEdt s trial period of 31 days has elapsed 的提示窗口 解决方案 修改脚本Exit edt 从Options Options Interface Adva
  • 多个DLL之间的Static变量以及模板实例化

    结论如下 1 DLL之间调用类public静态成员变量 不能使用A m static形式调用 其中A为类名 m static为A中的static成员变量 若使用 编译出现链接错误 必须使用函数调用方式 为m static增加set get函
  • python得到列表list的交集与差集

    python 神勇 得到两个列表的差集和交集 根本不用循环 一句话就可以搞定 交集 b1 1 2 3 b2 2 3 4 b3 val for val in b1 if val in b2 print b3 差集 b1 1 2 3 b2 2
  • linux gtk主题安装教程,如何获取、安装和制作 GTK 主题

    多数桌面版 Linux 都支持主题 GUI LCTT 译注 图形用户界面 独有的外观或者 风格 叫做主题 用户可以改变主题让桌面看起来与众不同 通常 用户也会更改图标 然而 主题和图标包是两个独立的实体 很多人想制作他们自己的主题 因此这是
  • Delphi Idhttp的post方法

    POST var Sendmessage TStringList 发送内容 Receivemessage TStringStream 返回内容 begin Sendmessage TStringList Create Receivemess
  • 三目运算符“?:”省略中间操作数

    在使用三目运算符的时候 我们经常见到的是 x x y 就是if else的简写 如果x为真 就返回x 如果x为假 就返回y 这是最简单最基本的用法 但是有时候会看到这种用法 x y 与 之间没有任何操作数 这是什么用法呢 在通过几个实例的实
  • 解决No converter for [class java.util.ArrayList] with preset Content-Type ‘null‘问题

    一 出现问题 二 解决方法 1 检查Maven依赖是否成功导入 记得clear后刷新
  • FileStream读写文件

    FileStream类 操作字节的 可以操作任何的文件 StreamReader类和StreamWriter类 操作字符的 只能操作文本文件 1 FileStream类 FileStream类 命名空间 System IO 1 构造函数 F
  • 关于开源许可证

  • “servlet监听器”以及在web.xml中的配置

    监听器 监听器就是一个java程序 功能是监听另一个java对象变化 方法调用 属性变更 以上是普通监听器 下面开始研究servlet监听器 注册监听器只需要配置到web xml中就行 servlet 监听器 8个监听器 准确说是8个接口
  • ext3日志文件系统工作原理理解

    ext3文件系统是在ext2文件系统的基础上增加了日志功能 具体的做法就是 在向文件系统中的文件写入数据的时候 会先产生一个journal log日志 这个journal log日志是生成在内存中的 系统中有一个后台进程kjournald2
  • 在node中使用es7

    今天学写了体验异步的终极解决方案 ES7的Async Await这篇文章 发现作者是用 es7 的语法写 node 所以顺便学习了一下如何在 node 中使用 es7 的语法 记录一下 首先安装 babel cli yarn add bab