cha*_*dev 18 javascript ecmascript-6
这是一个惯例问题.我是ES6的新手,但我正在尝试使用模块系统.从单个文件导出多个函数或导出包含这些函数的单个对象是首选/更常见的.
例:
utils.js
export function add(num1, num2) {
return num1 + num2;
}
export function minus(num1, num2) {
return num1 - num2;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
import {add, minus} from 'utils.js';
Run Code Online (Sandbox Code Playgroud)
VS
utils.js
const utils = {
add: (num1, num2) => {
return num1 + num2;
},
minus: (num1, num2) => {
return num1 - num2;
}
}
export default utils;
Run Code Online (Sandbox Code Playgroud)
在包含50-100个函数的utils文件中,第二种方式似乎是明显的赢家.但是对我来说只有一些感觉不对的东西,我不知道为什么.
Hen*_*son 14
如果您有通过utils文件公开的50-100个函数,那么我会说使用命名的导出
export function add() {}
Run Code Online (Sandbox Code Playgroud)
因为否则每次导入utils时都会导入所有函数.这可能是你有时想要的,但最有可能的是,对于任何给定的模块,只有少数可用的函数.如果你想要所有的功能import * as utils from './utils';就足够了.
但是,如果您想要安全防范它,那么没有什么不能说您可以使用这两种模式.
export function add() {};
const utils = {
add: add
};
export default utils;
Run Code Online (Sandbox Code Playgroud)
以上是有效的,也很常见.
只记得使用Babel 6.x时,使用export defaultwill实际生成一个对象(正确的方法),其中包含一个default属性,导出的对象将附加到该属性上.
import utils from './utils';
console.log(utils);
// { default: yourUtilsObject }
Run Code Online (Sandbox Code Playgroud)