Javascript 何时使用;导入*为Foo“;对;进口食品;?
我正在将BackboneJS(v1.2.2)项目转换为ES6 w/BabelJS 我注意到这两者之间有区别:Javascript 何时使用;导入*为Foo“;对;进口食品;?,javascript,import,ecmascript-6,Javascript,Import,Ecmascript 6,我正在将BackboneJS(v1.2.2)项目转换为ES6 w/BabelJS 我注意到这两者之间有区别: import Backbone from 'backbone' 及 阅读后,我了解到前者正在导入主干的默认导出,后者允许我“导入整个模块并通过属性表示法引用其命名导出” 我正在努力理解这两者之间的区别。对象在两个实例中都返回,但前者似乎用其他属性/方法修饰。至少我认为导入“整个模块”会有更多的属性/方法。。。但是我看到了相反的情况。一个模块可以导出一个“默认导出”和/或一个或多个命名导
import Backbone from 'backbone'
及
阅读后,我了解到前者正在导入主干的默认导出,后者允许我“导入整个模块并通过属性表示法引用其命名导出”
我正在努力理解这两者之间的区别。对象在两个实例中都返回,但前者似乎用其他属性/方法修饰。至少我认为导入“整个模块”会有更多的属性/方法。。。但是我看到了相反的情况。一个模块可以导出一个“默认导出”和/或一个或多个命名导出 使用问题中的第一个语法导入仅导入默认导出,并为该对象设置命名标识符(示例中的主干) 第二种语法称为名称空间导入,它在单个“名称空间”对象下导入整个模块 例如: export.js
这取决于模块的接口以及您希望如何利用它。在主干网的npm包的情况下,实际上没有默认的导出,所以两个版本在Babel传输时应该大致相同 至少我认为导入“整个模块”会有更多的属性/方法 这取决于默认导出是什么以及有哪些命名导出。以下是一个不属于这种情况的示例:
exporter.js
导出默认值{
一:"一",,
二:"二",,
三:“三”,
};
出口var a;
importer.js
//有3个道具['1','2','3']
从“出口商”进口;
//有2个道具['default','a']。
进口*作为“出口商”的所有出口;
什么是“附加属性/方法”的示例?第一个实例似乎用其他插件的属性修饰。例如,我加载了“backbone.localStorage”插件,看到了在主干上定义的“localStorage”,但现在我想起来了,这是有意义的,因为“backbone.localStorage”将自身写入全局主干对象。后者返回一个不受“backbone.localStorage”修改影响的命名空间实例。将{b:2}导出为b;
无效。@JMM-正确,已修复。将{b:2}导出为b}
也是无效的。我想您要做的是导出var b={b:2};
或var b={b:2};导出{b};
@JMM-又对了!我以为您可以在使用“as Name”语法时导出直接值,但显然您不能!再次修改!
import * as Backbone from 'backbone'
let b = {b: 2};
export default {a: 1}; // <- this is the ONLY default export
export {b};
export let c = {c: 3};
import SomeName from 'export'; // 'SomeName' is now the {a: 1} instance.
import {b} from 'export'; // 'b' is now the {b: 2} instance.
import * as ns from 'export'; /* 'ns' now has properties 'default', 'b' & 'c',
representing {a: 1}, {b: 2} & {c: 3} respectively */