如何从JS中的文件导出所有函数?

时间:2018-04-02 18:25:51

标签: javascript ecmascript-6

我正在创建一个单位转换器,我想将所有转换函数放入自己的文件中。使用ES6 export,有没有办法使用只有一行的默认名称导出文件中的所有函数?例如:

export default all;

这些功能都在文件中,而不在对象中。

8 个答案:

答案 0 :(得分:19)

不,没有通配符导出。

只需将L放在要导出的每个函数声明的前面,例如

export

...当然,如果您正在使用函数表达式:

export function foo() {
    // ...
}
export function bar() {
    // ...
}

答案 1 :(得分:11)

您还可以如下使用module.exports

function myFunction(arg) {
  console.debug(arg);
}
function otherFunction(arg) {
  console.error(arg);
}

module.exports = {
  myFunction: myFunction,
  otherFunction: otherFunction,
};

然后您可以导入它:

import {myFunction, otherFunction} from "./Functions.js";

答案 2 :(得分:7)

我认为有很多解决方案。正如已经回答的那样,没有通配符导出。但是,你可以通配'进口。所以,我更喜欢在你希望从文件中公开的每个函数之前放置export的那个:

//myfile.js
export function fn1() {...} 
export function fn2() {...}

然后import就像这样:

import * as MyFn from './myfile.js'

之后您可以这样使用它:

MyFn.fn1();
MyFn.fn2();

答案 3 :(得分:2)

对于Node.js环境,我要做的就是导出函数。

UserController.js

module.exports = {
  signUp: () => {
    return "user"
  },
  login: () => {
    return "login"
  }
}

UserRouter.js

const UserController = require('./UserController')

然后loginsignUp函数可以在UserRouter中用作UserController.signUp()UserController.login()

答案 4 :(得分:2)

我认为缺少一种常见的解决方案,该解决方案正在index.js文件中导出:

myModule/myFunctions.js

export const foo = () => { ... }
export const bar = () => { ... }

然后在myModule/index.js

export * from "./myFunctions.js";

通过这种方式,您可以简单地将其导入并使用:

import { foo, bar } from "myModule";
foo();
bar();

答案 5 :(得分:1)

您也可以将其导出到脚本的底部。

function cube(x) {
  return x * x * x;
}

const foo = Math.PI + Math.SQRT2;

var graph = {
  options: {
      color:'white',
      thickness:'2px'
  },
  draw: function() {
      console.log('From graph draw function');
  }
}

export { cube, foo, graph };

您还可以将子模块聚合到父模块中,以便可以从该模块导入子模块。

// In parentModule.js
export { myFunction, myVariable } from 'childModule1.js';
export { myClass } from 'childModule2.js';

// In top-level module
import { myFunction, myVariable, myClass } from 'parentModule.js'

答案 6 :(得分:0)

关于我的用例,我在一个文件中确实具有三个可重用的功能。

utils / reusables.js

export a = () => {}
export b = () => {}
export c = () => {}

为了指向根文件夹而不是单个文件名,我创建了一个名为index.js的文件,它将包含单个文件中列出的所有功能。

utils / index.js

export * from './reusables'

现在,当我想使用自己的a函数时,我将只需要像这样导入它

import { a } from '../utils'

而不是从其单个文件中调用它

import { a } from '../utils/reusables'

答案 7 :(得分:0)

functions.js

content:activate:browse

ma​​in.js

function alpha(msj) {
    console.log('In alpha: ' + msj);
}

function beta(msj) {
    console.log('In beta: ' + msj);
}

module.exports = {
    alpha,
    beta
};

运行

const functions = require('./functions');
functions.alpha('Hi');
functions.beta('Hello');

输出

node main.js