node.js从导入转换为要求

xpt

我正在讨论“如何将某些JavaScript代码从导入批量转换为要求”中未涉及的情况

这是npm包中hot-import原始代码

import * as assert  from 'assert'
import * as fs      from 'fs'
import * as path    from 'path'

import hotImport  from 'hot-import'

我将它们转换为

const assert = require('assert')
const fs = require('fs')
const path = require('path')

const hotImport = require('hot-import')
const hotMod = await hotImport(MODULE_FILE)

但是得到了:

TypeError: hotImport is not a function

经过大量的反复试验后,我发现它const { hotImport } = require('hot-import')可行,但是我不知道为什么。

有人可以总结一下,什么时候使用const hotImport = require('hot-import'),什么时候使用const { hotImport } = require('hot-import')

还有相关的原因,为什么要使用演示代码,

import * as fs      from 'fs'

代替

import fs      from 'fs'

两者之间有什么区别,何时选择哪个?

里德姆·塔帕拉(Ridham Tarpara)

假设在fs软件包中,fs软件包中有5个导出项,如下所示

export const readFile = _readFile;
export const appendFile = _appendFile;
export const writeFile = _writeFile;
export const open = _open;
export default fs; // fs class

现在,

1。

import * as fs from 'fs'

要求从名为“ fs”的本地变量“ fs”中导入所有命名的导出。以上代码段中的前4个称为出口。所以现在您可以将它们用作fs.open('/home/demo.txt')fs.writeFile('/home/demo.txt',...)

2。

import { open } from 'fs'

要求从fs导入名称导出“ open”到名为open的本地变量中。所以现在您可以将其用作open('/home/demo.txt')

3。

import fs from 'fs'

要求在本地fs变量(本例中为fs类)中导入“ fs”的默认导出。

因此,当您执行const hotImport = require('hot-import')此操作时,它将从“热导入”导入默认导出。因此您不能直接使用它,hotImport(MODULE_FILE)而是可以这样做hotImport.hotImport(MODULE_FILE)

您可以阅读有关销毁的更多信息

const person = {
  first: 'Ridham',
  last: 'Tarpara',
  country: 'India',
  city: 'Ahmedabad',
  twitter: '@ridhamtarpara'
};

如果您有人员对象,则以下两个代码将相同

const first = person.first; // Ridham
const last = person.last;   // Tarpara

const { first, last } = person; // first = Ridham, last = Tarpara

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章