V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
honmaple
V2EX  ›  JavaScript

前后端分离时 js 如何优雅的重定向

  •  
  •   honmaple · 2016-11-16 10:10:37 +08:00 · 3603 次点击
    这是一个创建于 2929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,有这么一个问题,前后端分离,nginx location / index.html,用户访问 xxx.com 时 index.html 里的 javascript 进行判断用户是否登录,未登录则跳转到 login.html

    那么问题来了,因为有一个判断是否登录的过程,所以访问首页时在跳转前会先显示出后台的内容,虽然这个过程不到 1s就跳到 login.html,请教这有什么办法不显示后台内容就直接重定向呢?谢谢

    13 条回复    2016-11-17 12:28:31 +08:00
    learnshare
        1
    learnshare  
       2016-11-16 10:57:12 +08:00
    前后端分离了,还不用 单页应用 的方式?
    swirling
        2
    swirling  
       2016-11-16 11:08:48 +08:00
    你判断登录之后再渲染 index 的内容呗。
    ijse
        3
    ijse  
       2016-11-16 11:11:54 +08:00
    为什么 要用 js 来判断用户是否登陆? 可以 让 nginx 直接判断的。
    otakustay
        4
    otakustay  
       2016-11-16 11:26:23 +08:00
    前后端分离也没必要把 html 分出去,一般 html 还是放在后端会比较有好处
    liyj144
        5
    liyj144  
       2016-11-16 12:07:07 +08:00
    针对你的场景,推荐加一个 main.html, 在这里负责页面的跳转,登陆就到 index ,否则到 login
    youhua
        6
    youhua  
       2016-11-16 12:28:37 +08:00
    难道最简单的办法不是在 Index 的 head 里面写一小段 JS 判断么
    lijsh
        7
    lijsh  
       2016-11-16 12:30:20 +08:00
    项目有没用前端框架? Vue 有 v-cloak 的指令,类似 Angular 中的 ng-cloak ,可以在状态出来前隐藏页面元素。
    ctsed
        8
    ctsed  
       2016-11-16 12:33:16 +08:00 via iPhone
    会有安全问题
    moxiaonai
        9
    moxiaonai  
       2016-11-16 12:36:42 +08:00
    判断结果返回成功之前,先隐藏掉,成功之后显示,反之跳转
    ansheng
        10
    ansheng  
       2016-11-16 12:56:27 +08:00
    1. 先判断有没有登录
    2. 然后再到后台获取数据
    stiekel
        11
    stiekel  
       2016-11-16 13:39:19 +08:00
    我这里 Angular ,是在 html 里写一个 loading ,所有资源加载完,再在 Angular 控制器里隐藏掉 loading ,使用 ng-if 控制 ui-router 的 ui-view 。

    不过这个事情,其实最好是在后端做,后端根据登场情况,来确定输出的 html 内容。
    dremy
        12
    dremy  
       2016-11-16 14:49:27 +08:00 via Android
    既然都前后端分离了,为什么 login 页面还要单独弄一个 login.html 文件呢?路由可以直接去拦截重和定向啊,登录逻辑和业务逻辑都打包到同个 js 文件里去,这样就不会把后台内容显示出来了
    slert
        13
    slert  
       2016-11-17 12:28:31 +08:00
    有的路由可以手动执行回调函数时才显示页面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:14 · PVG 11:14 · LAX 19:14 · JFK 22:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.