我正在调整我的身份验证JavaScript模块,以便使用一个JavaScript类钩子.js-auth-ui
来处理我的Web应用程序的身份验证,同时使用数据类型属性来引用正确的函数。如何降低根据数据类型调用回调函数的复杂度?
在扫描js钩子的DOM之后,我通过init函数运行它,如下所示,它依次运行一个exec函数,该函数可以调用回适当的函数。
我想知道是否有一种更有效的方式来编写execAuthUi函数,而不是所有其他如果根据我的linting规则增加其“复杂性”评级。
const execAuthUi = function ($element) {
const data = $element.data();
if (data.type === "account-login-form") {
authLoginEmail($element, data);
} else if (data.type === "account-logout") {
authLogout($element);
} else if (data.type === "account-reset") {
authReset($element);
} else if (data.type === "account-signup-form") {
authSignup($element);
}
};
const initAuthUi = function () {
const $notLoaded = $_jsElements.not(".is-initialized");
let $element = null;
let i = $notLoaded.length;
for (i; i--;) {
$element = $_jsElements.eq(i);
$element.addClass("is-initialized");
execAuthUi($element);
}
};
也许考虑开关/ case语句? – Spaceman
也personaly我不会考虑这个和过于复杂的功能。也许你只是有一个热情的棉绒。 – Spaceman
@SpaceSpace谢谢我同意,他们有点困难。但是,复杂性实际上比这个例子更加极端,所以我想提出一些更高效的方法。我还处理一些其他功能:'authLoginFacebook'和'authLoginTwitter'。这个主题中的想法非常有帮助。谢谢! – jasonbarone