_interopRequireDefault是什么?

时间:2018-07-03 16:42:22

标签: javascript ecmascript-6 export

我在this website上看到了一个解释:

  

_interopRequireDefault():ES6 CommonJS模块按原样使用(如果它具有默认导出,则它具有名为default的属性)。正常   CommonJS模块将成为属性默认值。其他   话说回来,在后一种情况下,模块的导出将成为默认   导出。

在代码中,通常有多个_interopRequireDefault被写入。

因此,据我所知,由于默认导出是作为整体实体导出的整个文件上的一堆键/值,_interopRequireDefault允许选择哪些模块将输入特定代码的默认导出中,呢?

1 个答案:

答案 0 :(得分:8)

为了让您的代码能够使用为nodejs和ES6编写的模块。

ES6和CJS(通用JS规范)中的模块工作导出方式之间存在差异。

通用JS中的模块:

public function store(StoreJobPost $request)
{
    $validFormData = $request->validated();

    $file = $request->file('file');
    $path = $file->storeAs('library/', $file->getClientOriginalName());
    $validFormData['path']= $path;

    $job = JobPost::create($validFormData);

    return redirect()->route('vacancies.index')->with('success', 'Job listing created successfully');
}

ES6中的模块:

module.exports = function () {};

_interopRequireDefault 的逻辑很简单:

export default function () {}

CJS在ES6之前存在。 Node仍使用CJS版本,并且所有最初为nodejs编写的模块。

尽管nodejs现在实验性地支持ES6模块,但是如果您使用-experimental 标志运行并将模块文件命名为.mjs。