以最简单的登录为例,诠释JS面向对象的简单实例

JavaScript,是前端开发人员必须会的一门技术,从JS演变出来的有很多框架,先说说几个热门的框架吧:

JQuery:这个技术必须会,如果不会,那一定要会查api,知道怎么写,要看得懂英文文档,这个框架十分流行,不论是刚入坑的开发者还是老油条,其实也都是是需要会的

 

BackBone:这个技术还不错,曾经的项目中用到过多次,很方便,是个MVC的实用框架,用来渲染视图十分简便

 

AngularJS:是个MVVM框架,和JQuery完全不一样,JQuery是基于dom元素的,而angerlar却不是,很多从jquery过来的新手起初做angular会很不习惯

 

ReactJS:React是Facebook 的一个内部项目,自己写了一套来适用于自己公司的业务,其实很多公司都会这么做,因为市场上的框架普遍不适用自己,其实一般大公司都这样,后来他们自己的这套react十分好用,就开源了,react十分好用,性能也不错,代码逻辑相对来说也挺简单,所以很多人开始用,也有人说这是未来web的趋势

 

JQuery EasyUI:这是一个比较不错的框架,很轻便,用来开发后端管理系统再好不过了,提供了各种组件

 

ExtJS:这个就不多说了,刚出来的时候很牛,但是后来貌似收费了,这个我不清楚,我没用过,现在用这个框架的貌似有,可能不多,至少我接触到的项目都不用这个,要用也大多都是基于JQuery EasyUI

 

……还有很多各式各样的框架,如今前端正火,甚至还有很多前端游戏引擎的JS,十分强大,在这里就不多说了

好了,貌似有点废话了,那么入正题吧,写JS,其实也要面向对象,在08年小编我刚入坑工作的时候,JS并不受大家重视,甚至CSS都是让美工人员做的,现在已经大不一样,来看看一个简单的登录是如何用面向对象的方式做的吧:

先来看看登录页面的代码,十分简单,就是一个用户名和密码

<form id="loginForm" >
        <input type="hidden" id="hdnContextPath" name="hdnContextPath" value="<%=request.getContextPath() %>"/>
        <P>
            <input class="ipt" type="text" name="username" placeholder="请输入用户名或邮箱" value="" />
        </P>
        <P>
            <input class="ipt" id="password" type="password" name="password" placeholder="请输入密码" value="" />
        </P>
        <button type="submit">Login</button>
    </form>

 

重头戏在js部分,我单独写了份login.js

var Login = function () {

    // 登录Form
    var formLoginValidation = function() {

            var loginForm = $('#loginForm');

            // 表单验证
            loginForm.validate({
                rules: {
                    username: {
                        required: true
                    },
                    password: {
                        required: true
                    }
                },
                messages: {
                    username: {
                        required: "登录用户名不能为空"
                    },
                    password: {
                        required: "登录密码不能为空"
                    }
                },

                submitHandler: function (form) {

                    var hdnContextPath = $("#hdnContextPath").val();
                    loginForm.ajaxSubmit({
                        dataType: "json",
                        type: "post", // 提交方式 get/post
                        url: hdnContextPath + '/login.action', // 需要提交的 url
                        data: loginForm.serialize(),
                        success: function(data) {
                            // 登录成功或者失败的提示信息
                            if (data.status == 200 && data.msg == "OK") {
                                window.location.href = hdnContextPath + "/index.action";
                            } else {
                                alert(data.msg);
                            }
                        }
                    });
//                    return false;
                }

            });

    }

    return {
        // 初始化各个函数及对象
        init: function () {

            formLoginValidation();

        }

    };

}();

jQuery(document).ready(function() {
    Login.init();
});

这是一个Login的对象,对象Login,formLoginValidation是这个对象中的属性,而这个属性是个function,主要两个作用,验证form以及登录成功后的跳转;最后这个Login对象返回一个init的函数,这个函数的作用是初始化对象中的所有方法

那么这个对象已经创建了,但是还没用,因为没有初始化,初始化必定是在dom完全加载完毕后

那么 Login.init()就行了

那么只要加入这段代码皆可以了,调用Login对象的init()方法,就可以初始化话所有对象函数,当然,有不同的属性都要写在init中,比如这样:

return {
        // 初始化各个函数及对象
        init: function () {

            formDataDictValidation();
            initDataDictTypes();
            initDataDictTable();

        }

    };

 

最后来看一下action吧,这个是用shiro来实现的,这里就不多说了,以后会单独拿出来再说说,也有可能直接上视频

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public LeeJSONResult loginPost(String username, String password) {

        if (StringUtils.isBlank(username)) {
            return LeeJSONResult.errorMsg("用户名不能为空");
        }
        if (StringUtils.isBlank(password)) {
            return LeeJSONResult.errorMsg("密码不能为空");
        }
        Subject user = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken(username, DigestUtils.md5DigestAsHex(password.getBytes()).toCharArray());
        // 默认设置为记住密码,你可以自己在表单中加一个参数来控制
//        token.setRememberMe(true);
        try {
            user.login(token);
        } catch (UnknownAccountException e) {
            return LeeJSONResult.errorMsg("账号不存在");
        } catch (DisabledAccountException e) {
            return LeeJSONResult.errorMsg("账号未启用");
        } catch (IncorrectCredentialsException e) {
            return LeeJSONResult.errorMsg("密码错误");
        } catch (RuntimeException e) {
            return LeeJSONResult.errorMsg("未知错误,请联系管理员");
        }
        return LeeJSONResult.ok();
    }

最后的最后我来唠叨几句吧,前端对于后端开发人员来说也许是个坑,因为很多后端人员都不喜欢接触,其实不然,如今全栈工程师是趋势,尤其在国外,国内要成为全栈挺难,毕竟前端后端通吃的开发者少之又少,极品中的极品,而这样的牛人小编我认识一个,然后他已经去美国知名公司做开发多年!

作为后端人员,JS其实一定要会,那些页面的逻辑性脚本要会写,其次,jquery要能看懂,要能灵活运用,到最后,要去使用某个js插件的时候你就能灵活运用了,比如jqgrid啦,ztree啦,其实都是如出一辙。

 

时间: 2024-10-26 20:33:46

以最简单的登录为例,诠释JS面向对象的简单实例的相关文章

js 面向对象oop简单说明

<script type="text/javascript"> var txt="hello world!" document.write(txt.length) //使用字符串对象的长度属性来计算字符串中的字符数目,输出为:12 </script> <script type="text/javascript"> var str="hello world!" document.write(s

源码-用javaSSH框架做一个简单的登录功能

问题描述 用javaSSH框架做一个简单的登录功能 用SSH框架做一个简单的登录功能,登录成功则跳转到一个页面,登录失败则跳转到一个失败页面,MySQL数据库.求大神指点,最好能提供源码 解决方案 Spring 3.x 企业应用开发实战的第一个例子就符合你的要求了.Mysql+srping3 解决方案二: 告诉我你的扣扣邮箱,我发你邮箱 解决方案三: 主要还是在struts2 里面,处理业务逻辑,再跳转到指定页面,关键在struts,xml配置文件里面

Python的Flask框架中实现简单的登录功能的教程

  Python的Flask框架中实现简单的登录功能的教程,登录是各个web框架中的基础功能,需要的朋友可以参考下 回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们

怎么用Java编写一个简单的登录系统?可以注册账号的那种

问题描述 怎么用Java编写一个简单的登录系统?可以注册账号的那种 数据库用的是MySQL,但Java操作方面的不知道怎么入手,求大神指点啊,有实例参考就更好了,谢谢 解决方案 import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.awt.Container; import java.util.*; import java.sql.*; class Login extends JFrame im

java中用集合写一个简单的登录功能。麻烦大家看一看

问题描述 java中用集合写一个简单的登录功能.麻烦大家看一看 //这是注册的方法 public static void reg(){ Collection id=new ArrayList();//账户 Collection passWord=new ArrayList();//密码 Scanner sc=new Scanner(System.in); System.out.println("请输入账号:"); id.add(sc.next()); System.out.printl

java web-JAVA WEB项目求助。简单的登录用户界面

问题描述 JAVA WEB项目求助.简单的登录用户界面 简单的登录界面,实现注册帐号,修改密码,忘记密码后修复密码. 需要使用后台与数据库的交互. 求教各位大神,1.搭什么样的环境比较好.求文章分享. 2.类似的文章讨论过的项目. 谢谢各位大神. 解决方案 用最简单的jsp就可以 参考:http://download.csdn.net/detail/mlh115101/2879187 无非都是最基本的数据库的增删改查. 解决方案二: http://wenku.baidu.com/link?url

简单用户登录和数据增删改查

问题描述 简单用户登录和数据增删改查 <%@page pageEncoding=""utf-8"" isELIgnored=""false""%><%@taglib uri=""http://java.sun.com/jsp/jstl/core"" prefix=""c""%><%@taglib uri="&

nodejs-用node+express4写了个简单的登录注册页面,但是出现了个bug不知道怎么解决?

问题描述 用node+express4写了个简单的登录注册页面,但是出现了个bug不知道怎么解决? 10C 写了个登录注册的简单页面,但是当我第一次注册完以后不管怎么注册都说用户已存在 我的代码: //存储用户信息User.prototype.save = function(callback){ var user = { name:this.name email:this.email password:this.password }; mongodb.open(function(errdb){

求。net mvc简单的登录删除查询 功能源码 哎 自学好辛苦

问题描述 求.net mvc简单的登录删除查询 功能源码 哎 自学好辛苦 有视频开发实例 或者好的资料也行 .哎 自学好辛苦 英文又不懂烦死了.好想求一位师傅 解决方案 先跟着我的这篇博客试着写一下,然后登陆.删除啥的依葫芦画瓢. http://blog.csdn.net/chinacsharper/article/details/43927025 解决方案二: 这个百度一搜,应该够入门了吧 解决方案三: 呵呵 也是 只是自己本来就不懂 没人教 学的好乱 看不大懂啊 解决方案四: 吧你的联系方式