【发布时间】:2018-01-08 14:14:43
【问题描述】:
我有一个每天有 10 万用户的网站。目前我们正在使用模块化设计模式在 Jquery/Vanilla JS 中编写代码。一个简单的隐藏/显示加载器的js如下
"use strict";
var loaderHandler = (function(){
var loader = document.getElementById('main_loader');
return{
showProcessLoader : function(){
loader.style.display = 'block';
loader.style.opacity = '0.5';
},
hideLoader : function(){
loader.style.display = 'none';
}
}
})();
docReady(function() {
loaderHandler.hideLoader();
});
每当我想在某个地方显示加载器时,我只需调用 loaderHandler.showProcessLoader();和 loaderHandler.hideLoader();隐藏它。同样,我还有其他使用相同设计模式编写的 JS 文件,我使用来自该页面所需的所有 js 的 gulp 任务创建了一个缩小的 JS。目前,一切正常,我可以毫无问题地在另一个内部调用一个 js 文件函数。
我决定将我的应用程序迁移到最新的 es6 现在我有以下问题/查询
什么是 es6 中的设计模式,它将等同于我的模块化设计模式?
我不打算重写我现有的 js 文件,而是只在 es6 中编写新的 js。所以我希望新的设计模式不应该干扰现有的架构,并且仍然支持我在 es6 中编写新的 js 文件。
另外,当为页面创建单个缩小文件时,我仍然应该能够轻松地调用另一个 js 文件函数。
编辑 - 我已经在使用 babel 将我的 es6 代码转换为 es5 等效代码
【问题讨论】:
-
看起来您使用模块模式的原因是为了隐私(例如,变量 loader 将是 loaderHandler 函数的私有)。 ES6 实际上并没有提供更好的模块模式,所以如果你需要严格的隐私,你应该继续做你正在做的事情。
标签: javascript jquery design-patterns ecmascript-6