Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ecmascript 6 如何将整个模块导出为默认值?_Ecmascript 6 - Fatal编程技术网

Ecmascript 6 如何将整个模块导出为默认值?

Ecmascript 6 如何将整个模块导出为默认值?,ecmascript-6,Ecmascript 6,e、 g 然后在另一个文件中: // lib.js export function f1() {} export function f2() {} export * as default; // invalid syntax 有没有一种方法可以在不显式导出每个函数的情况下执行此操作?e、 g // app.js import lib from './lib.js'; lib.f1(); PS:我知道我可以从“/lib.js”导入*作为库 export default {f1, f2}; //

e、 g

然后在另一个文件中:

// lib.js
export function f1() {}
export function f2() {}
export * as default; // invalid syntax
有没有一种方法可以在不显式导出每个函数的情况下执行此操作?e、 g

// app.js
import lib from './lib.js';
lib.f1();
PS:我知道我可以
从“/lib.js”
导入*作为库

export default {f1, f2}; // tedious
应该足够了。因此,模块导入自己的所有导出,然后将自己导出为默认导出

不过,我会支持Bergi的回答,从API设计的角度来看,这并不好,而且可能会慢一些。如果有东西正在使用您的模块并需要从中导入,它应该知道它正在导入什么,或者自己请求它们,您的模块不应该为它们这样做

应该足够了。因此,模块导入自己的所有导出,然后将自己导出为默认导出

不过,我会支持Bergi的回答,从API设计的角度来看,这并不好,而且可能会慢一些。如果有东西正在使用您的模块并需要从中导入,它应该知道它正在导入什么,或者自己请求它们,您的模块不应该为它们这样做

我知道我可以
从“/lib.js”
导入*作为lib

export default {f1, f2}; // tedious
你真的应该。不要让API变得比它需要的更混乱

如果您仍然希望默认导出自己的模块名称空间对象,也可以这样做

import * as lib from './lib';
export default lib;
我知道我可以
从“/lib.js”
导入*作为lib

export default {f1, f2}; // tedious
你真的应该。不要让API变得比它需要的更混乱

如果您仍然希望默认导出自己的模块名称空间对象,也可以这样做

import * as lib from './lib';
export default lib;
还有一个选择:

lib.js

export * as default from "./lib.js"; // self-reference
app.js

export default {
   someFunctionOne: () =>  {

   },

   someFunctionTwo: () =>  {

   },


   someFunctionThree: () =>  {

   }
};
还有一个选择:

lib.js

export * as default from "./lib.js"; // self-reference
app.js

export default {
   someFunctionOne: () =>  {

   },

   someFunctionTwo: () =>  {

   },


   someFunctionThree: () =>  {

   }
};

你可以导入你自己吗??这怎么会不产生递归炸弹呢?这不一定是个问题,你基本上是在初始化导出之前,但在解析它们之后,获取对模块导出的引用。你可以自己导入??这怎么会不产生递归炸弹呢?这不一定是个问题,你基本上是在初始化导出之前,但在解析它们之后,获取对模块导出的引用。你为什么要这样做?您已按名称导出它们。为什么要这样做?您已经在按名称导出它们。该语法是建议,目前也不允许使用默认值,尽管我确实提交了一个问题,以查看这是否是有意的:@loganfsmyth:Ah,我知道在发布此内容之前我应该检查一下。这如何使我的API更加混乱?我没有对其他任何东西使用
default
,它只是在每次使用lib时将
*写成
。99%的时间您需要名称空间,如果您出于某种原因不需要名称空间,您仍然可以使用该选项。“
*as
”没有那么长,它清楚地说明了您要导入的内容(对于程序员和引擎而言,它们可能会基于此进行优化)。相反,在我看来,拥有一个包含自身的名称空间只是……奇怪。想想像lodash这样的库。您希望从“lodash”
导入什么?我得说这很清楚,它给了我典型的洛达斯对象;实际上,这里没有其他有意义的默认设置。优化。。。你有什么资料支持吗?如果我们将完整对象导出为默认值,它是否会变得不可树抖动?该语法是建议,并且当前不允许
default
,尽管我确实提出了一个问题,以查看这是否是有意的:@loganfsmyth:啊,我知道在发布此内容之前我应该检查一下。这如何使我的API更加混乱?我没有对其他任何东西使用
default
,它只是在每次使用lib时将
*写成
。99%的时间您需要名称空间,如果您出于某种原因不需要名称空间,您仍然可以使用该选项。“
*as
”没有那么长,它清楚地说明了您要导入的内容(对于程序员和引擎而言,它们可能会基于此进行优化)。相反,在我看来,拥有一个包含自身的名称空间只是……奇怪。想想像lodash这样的库。您希望从“lodash”
导入什么?我得说这很清楚,它给了我典型的洛达斯对象;实际上,这里没有其他有意义的默认设置。优化。。。你有什么资料支持吗?如果我们将完整对象导出为默认对象,它是否会变得不可树抖动?我想要裸名称和默认对象:)我想要裸名称和默认对象:)