我正在尝试使用 Node.js 为我处理一些可编写脚本的 URL 重定向。它工作得很好,但脚本需要采用尽可能简单的格式,因为它将由其他人管理。
我想做的是使用构建器模式,这样我就可以拥有以下内容:
redirectWhen.isMobileDevice().urlMatches("http://www.somewhere.com").thenGoTo("http://mobile.somewhere.com");
redirectWhen.urlMatches("http://subdomain.somewhere.com").thenGoTo("http://www.somewhere.com/somefolder/");
然后我会根据结果重定向(基本上匹配链中所有项目的最后一个获胜)。如果你想象所有的功能(isMobileDevice()
&urlMatches(...)
做一些简单的字符串检查等等,那么一切都很好。
但我需要这个isMobileDevice()
函数来执行一个 HTTP 请求。这意味着有一个回调函数在响应完成时被调用。是否有可能做到这一点并且仍然保持构建器模式完好无损?我想我可以做类似的事情:
redirectWhen.isMobileDevice(function() {
urlMatches("...").thenGoTo("...");
});
但这比我想要的增加了脚本的复杂性。管理这些脚本的人知道基本的 JavaScript,但如果他们必须开始嵌套回调,我想他们很快就会感到困惑。
我猜我正在尝试实现一些在这里不可能的事情,但我自己对 JS 的了解还不够,无法证实这一点!