Javascript 最好导出一个包含函数的对象,或者只导出ES6中的多个函数(有约定吗?)
这是一个惯例问题。我是ES6新手,但我正在尝试利用模块系统。从单个文件导出多个函数或导出包含这些函数的单个对象是首选/更常见的 例如: utils.jsJavascript 最好导出一个包含函数的对象,或者只导出ES6中的多个函数(有约定吗?),javascript,ecmascript-6,Javascript,Ecmascript 6,这是一个惯例问题。我是ES6新手,但我正在尝试利用模块系统。从单个文件导出多个函数或导出包含这些函数的单个对象是首选/更常见的 例如: utils.js export function add(num1, num2) { return num1 + num2; } export function minus(num1, num2) { return num1 - num2; } const utils = { add: (num1, num2) => { retur
export function add(num1, num2) {
return num1 + num2;
}
export function minus(num1, num2) {
return num1 - num2;
}
const utils = {
add: (num1, num2) => {
return num1 + num2;
},
minus: (num1, num2) => {
return num1 - num2;
}
}
export default utils;
然后像这样使用它:
import {add, minus} from 'utils.js';
vs
utils.js
export function add(num1, num2) {
return num1 + num2;
}
export function minus(num1, num2) {
return num1 - num2;
}
const utils = {
add: (num1, num2) => {
return num1 + num2;
},
minus: (num1, num2) => {
return num1 - num2;
}
}
export default utils;
在一个包含50-100个函数的utils文件中,第二种方法显然是赢家。但是我觉得这有点不对劲,我不知道为什么。如果你想通过你的UTIL文件公开50-100个函数,那么我建议使用命名的导出
export function add() {}
否则,每次导入UTIL时,您都会导入所有函数。这可能是您有时想要的,但对于任何给定的模块,很可能只有少数几个可用的函数。
如果希望所有函数都是一个简单的import*as-utils from'/utils'代码>就足够了
但是,如果您想安全防范,没有什么不可以说您可以使用这两种模式
export function add() {};
const utils = {
add: add
};
export default utils;
以上是有效的,也是很常见的
请记住,从Babel 6.x开始,使用导出默认值
开发库时,将实际生成一个对象(正确的方式),其中包含导出对象将附加到的默认值
属性
import utils from './utils';
console.log(utils);
// { default: yourUtilsObject }
展望未来,导出多个函数可能会更好,因为这样可以根据是否已导入消除死代码
如果导出一个大对象,则不可能总是使用静态分析来判断哪些函数需要保留,哪些函数可以安全地丢弃
如果导出多个命名函数,则模块绑定器可以分析AST,然后安全地将实际导入的函数列为白名单 谢谢大家!!你给了我我想要的解释。我已经在使用第一种语法,我想我会继续使用它。我也不知道默认的事情。所以,谢谢你。另请参见