所以,在我的webpack src中,我试着
import {Papa} from "papaparse"
export {Papa}
和
import Papa from "papaparse"
export {Papa}
注意第二个,导入不使用大括号。当我这样调用时,不带大括号的(默认导入?)可以工作:
import {Papa} from "papaparse-webpack-generated.js"
Papa.parse(...)
这是我用npm下载的papaparse.js:
(function(root, factory)
{
/* globals define */
if (typeof define === 'function' && define.amd)
{
// AMD. Register as an anonymous module.
define([], factory);
}
else if (typeof module === 'object' && typeof exports !== 'undefined')
{
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
}
else
{
// Browser globals (root is window)
root.Papa = factory();
}
// in strict mode we cannot access arguments.callee, so we need a named reference to
// stringify the factory method for the blob worker
// eslint-disable-next-line func-name
}(this, function moduleFactory()
{
'use strict';
var Papa = {};
Papa.parse = CsvToJson;
Papa.unparse = JsonToCsv;
//a bunch of functions and variables here
return Papa;
}));
我只是好奇这两者有什么区别?为什么我用花括号的话webpack生成的js会失败?如果我使用命名导入(花括号)使用webpack生成,那么< code>Papa.parse会给出< code>Papa is undefined
编辑:从上面的< code>papaparse.js片段中我们可以看到,对于变量< code>Papa,没有< code>export语句。我错过了什么吗?那么,我们如何判断它是命名导出还是默认导出呢?
谢谢你。
这一切都归结于< code>papaparse公开/导出其模块的方式。< br >如果它正在:
const Papa = ...;
export default Papa;
您需要以这种方式导入它(导入默认导出的成员不需要大括号):
import Papa from "papaparse"
// or you can call it whatever you want
import Mama from "papaparse"
但是,如果它是命名导出,例如:
const Papa = ...;
const Mama = ...;
export { Papa, Mama };
您需要使用其名称导入它:
import { Papa } from "papaparse";
// or call it something else within your module from now on:
import { Papa as Mama } from "papaparse";
在您从中导入的文件中,您会注意到 Papa 被导出为“导出默认值”。模块可以具有单个默认导出和任意数量的命名导出。
默认导出是使用不带大括号的语法导入的,并且在导入的文件中可以有任何名称(因为歧义不是通过名称来解决的,而是通过模块只能有默认导出这一事实来解决的)。
另一方面,命名导出必须由它们的特定名称引用,并且必须放在花括号内,以表示它们是命名导出。您可以使用以下语法导入多个命名导出:
import {NamedA, NamedB} from x
甚至同时导入两者:
import DefaultExport, {NamedA, NamedB} from x
在这里进一步阅读: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
问题内容: 我很惊讶地发现 和 对全球成员产生了不同的影响。我想确认我的实验是正确的行为。 在第一个示例中,更改foo模块中的成员将反映在所有导入foo的代码中。但是,在以后的情况下更改该成员似乎仅影响导入该成员的文件。换句话说,使用后一种方法将为每个导入文件提供其自己的foo成员副本。 我想要的行为是可以从所有文件访问foo.x,可以从所有文件更改它,并在所有文件中反映该更改(如果愿意,则为真正
我已经看到了从ES6中的另一个模块导入代码的以下两种变体: 和 其中是在文件中定义的ES6类 Module.js 这两种导入语句有什么区别?
这是一个非常基本的问题,有一个非常广泛的答案,由@Mark Roddy编写使用导入模块或从模块导入? 根据这个答案,每种方法都有利弊,但结果是相同的,两者都有效。 这样做: 或 应该有用。 我的问题: 考虑这个例子: 其中: 以及: 它给出了以下输出: 所以我很困惑。两者都应该起作用。为什么Python会为第一种方法生成异常?
我正在使用VSCode并尝试将项目中跨多个文件的导入写入方式更正为更高性能的格式——VSCode是否具有促进这一点的功能?它可以通过内置的查找和替换来完成吗?或者其他一些VSCode功能能够做到这一点吗? 我得到的导入看起来是这样的(<code>substance ux</code>是真实模块名的模糊版本,因为我不需要特定于模块的答案): 或者也许: 我需要将其转换为这种样式,以匹配我们项目中其他
问题内容: 两者之间的性能复杂度是多少 和 PS。 我知道第一个文件将包含每个文件,第二个文件将仅包含选定的类文件。 问题答案: 在运行时0。 两者都生成相同的字节码
从ES6JavaScript模块导入和命名资源的正确语法是什么? 例子: 如何一次导入? 它不是什么时候我应该使用花括号进行ES6导入的重复?,它更具体,要求一个单一的用例,而不是一篇文章。
问题内容: 在Python中,我不太清楚以下两行代码之间的区别: 要么 他们不是都只是从模块X导入所有内容吗?有什么不同? 问题答案: 之后,你可以参考的东西一样。之后,您可以像一样直接引用事物。因为第二种形式将名称直接导入到本地名称空间,所以如果您从许多模块中导入内容,则可能会产生冲突。因此,不鼓励使用。 您也可以执行,仅将导入到本地名称空间,而不导入中的所有内容。这样做会更好,因为如果您列出了
模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(