首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CommonJS到ES6迁移导出。出口

CommonJS到ES6迁移导出。出口
EN

Stack Overflow用户
提问于 2022-01-21 01:02:40
回答 1查看 218关注 0票数 0

我正在将一个Nativescript项目从6.8版迁移到8.1版。这涉及到将模块从CommonJS转换为ES6,这主要是转换函数导出,以便

代码语言:javascript
复制
exports.foo = function(args) { ... }

变成了

代码语言:javascript
复制
export function foo(args) { ... }

如果您从模块中调用该函数,exports.foo()就变成了foo()

除了我自己的代码之外,我还发现我不得不迁移一些插件,因为更新的版本是不可用的。到目前为止还不错,除了这段代码:

代码语言:javascript
复制
/**
 * List of outout formats.
 */
(function (OutputFormat) {
    /**
     * PNG
     */
    OutputFormat[OutputFormat["PNG"] = 1] = "PNG";
    /**
     * JPEG
     */
    OutputFormat[OutputFormat["JPEG"] = 2] = "JPEG";
})(exports.OutputFormat || (exports.OutputFormat = {}));
var OutputFormat = exports.OutputFormat;

我很难理解它所做的事情,更不用说将它转换成ES6语法了。对于上下文,下面是类型定义:

代码语言:javascript
复制
export declare enum OutputFormat {
    /**
     * PNG
     */
    PNG = 1,
    /**
     * JPEG
     */
    JPEG = 2,
} 

我欢迎任何关于如何转换这个的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-21 01:06:51

首先看一下它是用什么调用的:

代码语言:javascript
复制
(exports.OutputFormat || (exports.OutputFormat = {}));

如果parameter

  • Otherwise,是真实的,则是
  • ,下面的表达式将是参数:exports.OutputFormat = {},它将:
    • 创建一个空对象
    • ,将空对象分配给那个空object

除非在此模块的其他地方引用OutputFormat (这似乎不太可能),否则您可以使用以下方法将其转换为ES6模块语法:

代码语言:javascript
复制
export const OutputFormat = {
  PNG: 1,
  1: "PNG",
  JPEG: 2,
  2: "JPEG",
};

同时还可以导出一个空对象,然后运行

代码语言:javascript
复制
OutputFormat[OutputFormat["PNG"] = 1] = "PNG";
OutputFormat[OutputFormat["JPEG"] = 2] = "JPEG";

,这些代码行比它们所需要的要混乱得多,所以我会将它们重构为上面的代码。

(或者您可以迭代[["PNG", 1], ["JPEG", 2]]数组并分配)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70795207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档