【发布时间】:2017-12-07 21:16:35
【问题描述】:
我刚刚开始使用 es 6 模块进行前端开发(我们根本不使用 Node),想知道我们提出的这种模式是否有任何缺陷,或者您是否有任何改进建议。我猜它在 es6 模块中使用了揭示模块模式背后的一些基本原理。我问这个问题是因为我见过的大多数 es6 模块“如何指导”都做了不同的事情,我会在问题的最底部注明。
注意事项:
- 我们(非常确定我们)希望每个模块只导出一个东西。这在 Airbnb 风格指南中被列为最佳实践,我们刚刚发现在使用 npm 包时总体上很好
- 我们非常喜欢使用“public”和“private”来命名方法(我们应该将 _ 用于私有方法,因为这是较新的最佳实践),这样可以轻松查看模块外部可用的内容
module.js:
// publicly available method
function publicHello() {
return 'Hello';
};
// publicly available method
function publicHelloWorld(){
const a = publicHello();
const b = privateProcessWorld(a);
return b;
};
// private method
function privateProcessWorld(x) {
return x + ' world';
};
// create an object to export, containing only the public methods
// note that we rename them here as well, making them easier to consume
const exp = {
h: publicHello,
hw: publicHelloWorld,
};
// export the object as default so it can be used in an unnamed import
export default exp;
使用模块:
import whatever from "module.js";
whatever.h(); // "Hello"
whatever.hw(); // "Hello world"
我在大多数“es6 module how to”指南中看到的是这样的:
var utils = {
generateRandom: function() {
return Math.random();
},
sum: function(a, b) {
return a + b;
}
};
export default utils;
【问题讨论】:
-
第二个更短,保证了良好的结构。然而,第一种模式也有很多很好的用例。而不是
public / private,它是一种常见的模式,用_或#之前注释peivate -
@JonasW。您能否详细说明“确保良好结构”的含义?我想我在这方面的第一个问题是私有方法/变量在哪里,高于或低于 var utils?同样是的,我们应该说 _ 是最佳实践;当我们很久以前开始使用公共/私有时,我想我们只是从未改变过我们的方式。
-
"我们希望每个模块只导出一个东西。这在 Airbnb 风格指南中被列为最佳实践" - 不,airbnb 误解了模块的工作原理。 Please don't do this.
标签: javascript