我正在创建一个单位转换器,我想将所有转换函数放入自己的文件中。使用ES6 export
,有没有办法使用只有一行的默认名称导出文件中的所有函数?例如:
export default all;
这些功能都在文件中,而不在对象中。
答案 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')
然后login
和signUp
函数可以在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
main.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