这是一个很好的架构来将所有代码封装在一个大对象中吗?
不是真的在这个时代。当然,这种方法可以将全局名称空间上的脚印缩小为单个名称,如app
。但使用ES6模块可以更轻松地完成相同的任务。转移非常容易。你可以继续写
function Tools() { }
Tools.someFunction = function(arg1, arg2) {
// do something
};
因为你之前,但增加
export default Tools;
然后,您要使用此
import Tools from 'tools';
Tools.somefunction();
我怎么可以追加静态类这个字面意思?
有了ES6模块,您不需要,但在这里的许多问题中描述了许多模式。一些例子:
IIFE:
var app = {
someController: function() {
var f = function() { };
f.someProp = 42;
return 42;
}(),
初始化程序:
var app = {
someController: function() { },
init: function() {
this.someController.someProp = 42;
return this;
}
}.init();
明确划分:
var app = {
someController: function() { }
};
app.someController.someProp = 42;
这些都不是很好玩的读取或写入。他们对2012年的感觉有些类似。使用ES6模块来避免这种情况,并回到编写常规旧代码。
两者都很好,但我认为第二个更好,因为在它里面我们也可以有私有函数和变量。但都很好 –
第一个也可以有私人功能.. – Rayon
旁注:OOP没有“静态类”的概念。有静态_members_(方法或属性),而不是_classes_。虽然只包含静态成员的类可能被称为静态,但这只是一个缩短的术语,而不是单独的概念。 – hindmost