如何清楚地分离前端和后端逻辑

时间:2015-02-25 15:17:39

标签: javascript php session

我遵循了一些关于记录表单的在线教程,但在我看来它们太简单了。我的意思是他们总是将用户名和密码发送到同一个PHP页面,同时进行身份验证和显示结果。

我只是想知道是否可以分离前端和后端的逻辑。前端仅负责发送和接收请求,而后端执行数据库连接和身份验证。后端应该将结果发送回前端,相应地显示它们。

我必须承认我是网络开发的新手,我真的不知道这是否是正确的方向,因此寻求你的专业帮助。

以下是我的设计,

前端有一个按钮,可以调用javascript函数发送和接收请求。

<button type="button" onclick="javascript:queryLogin()">

Javascript函数准备发布请求和接收响应。

    function queryLogin() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;
        var xmlhttp = new XMLHttpRequest();
        var parameters = "username="+username+"&"+"password="+password;

        xmlhttp.onreadystatechange=function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                statusLogin(xmlhttp.responseText);
            }
        }

        xmlhttp.open(/*method=*/"POST", /*url=*/"login_back.php", /*async=*/true);
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xmlhttp.send(parameters);
    }

    function statusLogin(response) {
        var arr = JSON.parse(response);

        switch(arr.result) {
            case 0:   document.getElementById("message").innerHTML="";
                      break;
            default:  document.getElementById("message").innerHTML="";
                      /* TODO: How to destroy session? */
                      break;
        }
    }

所以基本上我陷入了这种情况:如果身份验证失败,前端应该销毁会话,但现在逻辑是在javascript中,这很难破坏php会话。

请告知该怎么做。提前致谢。

1 个答案:

答案 0 :(得分:1)

您所谈论的内容基本上是指SPA或单页应用程序。在这种类型的站点中,应用程序逻辑几乎完全从服务器转移到客户端,这提供了允许您具有极薄服务器设置的好处。传统上,您会看到像这样的网站在服务器端使用Node.js,因为那里的工作很少,但您可以使用任何数据源,无论是Web API还是全栈Web应用程序。

然而,SPA非常复杂。协调客户端的所有工作并不适合胆小的人,因为网络的任何组件都不是真正的用途。在这里,客户端框架,如Angular / Backbone /等。几乎是必需品,因为滚动自己不仅浪费你的时间和资源,而且可能永远不会像社区发展的那样好。虽然在学习网页开发时,SPA可以很有趣,但它们却是一种非常糟糕的方式。在你有经验之前,我建议你采用传统的服务器方式,不要担心这样的事情。

以服务器端为中心的Web应用程序可以像客户端一样高效,如果不是更多,并将向您介绍使用服务器的概念,这些服务器可能会被跳到客户端而被掩盖MVC / MVVM框架。