账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    多个SPA网站部署在不同二级域名下,要求前端判断环境进行跳转是否合理?
    46
    0

    整个网站被拆分成了多个SPA项目(都是vue项目),通过Docker(用nginx镜像)实现部署,并分别部署在不同的二级域名下。同时为了测试,要求前端有dev, test, alpha, beta, prod这5套环境。

    前端的跳转不涉及传参数,不涉及后端数据问题。现在领导要求前端去判断其运行的环境,从而跳转到同环境下的其他网站,这样要求是否合理?

    举例,假如共3个SPA项目,正式环境的域名分别为:www.web.com, a.web.com,b.web.com. 对应的test环境域名的就分别是test.web.com, a-test.web.com, b-test.web.com...(其他环境的域名逻辑一样)

    后端不提供这些域名数据,也不提供重定向服务,运维不提供nginx配置,仅允许前端编译一次,5个环境共用同一个docker镜像,要求前端自己判断环境,所以出现了以下这种垃圾代码:

    const { hostname } = location;
    if (hostname == 'www.web.com') location.href = '//a.web.com';
    if (hostname == 'beta.web.com') location.href = '//a-beta.web.com';
    if (hostname == 'alpha.web.com') location.href = '//a-alpha.web.com';
    if (hostname == 'test.web.com') location.href = '//a-test.web.com';
    if (hostname == 'dev.web.com') location.href = '//a-dev.web.com';

    我认为,这种代码是无法测试的,虽然可以通过正则等方式实现,但一旦正式环境的case写错了,在其他4个环境的测试即使通过也毫无意义。

    既然都已经将网站拆分成了多个项目分别开发测试上线,而对于prod环境来说,其他4个环境仅仅为了测试,没有使用价值,那就都应该跳转到prod最终环境的域名,而不应该搞这种大环境的绝对平行。

    另外要说的是,要跳转的站点绝对不是只有3个,而且我们4个月中域名换了两次……一旦换域名,就得改上面那一坨垃圾代码,完成上线之前所有工作都得停滞

    不依赖后端和web服务器要求前端去判断环境,实现这种环境绝对平行,这么做究竟合理么?

    补充:

    其实,我最纠结的是,为什么相互之间独立的SPA要跳转,不能跳到线上的域名?非得环境平行,让dev跳到dev, test跳到test……

    这样的测试结果毫无意义啊。因为即便是每个环境分别编译构建,通过环境变量注入代替上面的垃圾代码,也不能保证在test环境测试通过就一定在prod没问题啊,万一prod的环境变量写错了呢,在test环境无法检测出来啊。如果都跳到线上不就没有测试不可靠的问题了么?

    问题的知乎链接

    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 在SPA(Single Page Application)网站中,多个SPA网站部署在不同二级域名下,如果要判断环境进行跳转是否合理,可以从以下几个方面进行考虑:

      1. 变量一致性:如果每个SPA都有自己的数据库或存储,那么在不同的环境中,需要确保在前端同一时刻只有一个数据库或存储在活动。如果环境变化,数据库或存储的设置也需要相应地更新,这可能会导致前端页面的数据不一致,影响用户体验。

      2. 数据库访问安全:如果SPA多个网站都在不同的数据库中,那么在不同的环境中,需要确保在数据库的访问安全上保持一致。这可能需要对数据库的访问权限进行管理,或者使用不同的数据库来存储不同的数据。

      3. 跨域问题:如果SPA多个网站部署在不同二级域名下,那么在不同的环境中,需要确保跨域问题的解决。这可能需要使用CORS(跨域资源共享)技术,或者使用其他跨域解决方案。

      4. 性能问题:如果SPA多个网站部署在不同二级域名下,那么在不同的环境中,需要确保性能问题的解决。这可能需要优化SPA的性能,或者使用其他性能优化技术。

      5. 兼容性问题:如果SPA多个网站部署在不同二级域名下,那么在不同的环境中,需要确保兼容性问题的解决。这可能需要使用响应式设计,或者使用其他响应式设计技术。

      总的来说,判断环境进行跳转是否合理,需要考虑上述因素,以及根据具体情况进行权衡。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部