Как я могу экспортировать все функции из файла в JS?
Я создаю конвертер единиц, и я хочу поместить все функции преобразования в свой собственный файл. Используя export
ES6, есть ли способ экспортировать все функции в файле с именами по умолчанию, используя только одну строку? Например:
export default all;
Все функции находятся только в файле, а не внутри объекта.
Ответы
Ответ 1
Нет, нет экспорта подстановочных знаков.
Просто поставьте export
перед каждым объявлением функции, которое вы хотите экспортировать, например
export function foo() {
// ...
}
export function bar() {
// ...
}
... или, конечно, если вы используете выражения функций:
export var foo = function() {
// ...
};
export let bar = () => {
// ...
};
export const baz = value => {
// ...
};
Ответ 2
Я думаю, что есть много решений для этого. И, как уже было сказано, нет подстановочного экспорта. Но вы можете 'подстановочный знак' импорта. Поэтому я предпочитаю ставить export
перед каждой из функций, которые вы хотите показать из файла:
//myfile.js
export function fn1() {...}
export function fn2() {...}
а затем import
это так:
import * as MyFn from './myfile.js'
После этого вы можете использовать его так:
MyFn.fn1();
MyFn.fn2();
Ответ 3
Для среды 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
Вы также можете экспортировать их внизу вашего скрипта.
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'