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

时间:2022-09-22 12:09:30

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啦,其实都是如出一辙。

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

  1. spring Boot 简单的登录功能,利用了jdbcTemplate&period;class完成sql语句的执行,无需service层、dao层和&period;xml文件

    1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...

  2. Xamarin&period;Android再体验之简单的登录Demo

    一.前言 在空闲之余,学学新东西 二.服务端的代码编写与部署 这里采取的方式是MVC+EF返回Json数据,(本来是想用Nancy来实现的,想想电脑太卡就不开多个虚拟机了,用用IIS部署也好) 主要是 ...

  3. Android破解学习之路(一)——简单的登录破解

    最近突然心血如潮开始学了Android破解,初入门,便是将经验记录下来. 准备工作: 1.一个登录简单APP 在我们破解之前,我们需要做一个简单的登录APP,输入相应的账号与密码便是弹出登录成功的对话 ...

  4. Java结合SpringBoot拦截器实现简单的登录认证模块

    Java结合SpringBoot拦截器实现简单的登录认证模块 之前在做项目时需要实现一个简单的登录认证的功能,就寻思着使用Spring Boot的拦截器来实现,在此记录一下我的整个实现过程,源码见文章 ...

  5. SSM-MyBatis-01:IDEA的安装,永久注册和简单的MyBatis用例

    一,IDEA的安装和永久注册 1.安装: 那到安装包,下一步,选路径,上面可以选操作系统64/32位,下面是程序的默认打开方式,可以不必勾选,也可以全选 路径一定不包含中文,重点 2.永久注册: 将此 ...

  6. 简单登录注册实现(Java面向对象复习)

    简单登录注册的实现(面向对象的复习) 需求: 设计用户类,包含用户名和密码两个属性 设计LoginDemo类设计用户登录方法 用户有三次登录机会,如果连续三次登录失败则退出程序 功能实现页面:     ...

  7. 【知了堂学习笔记】java web 简单的登录

    最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...

  8. iOS登录单例

    iOS登录单例 一,工程图. 二,代码. UserInfo.h #import <Foundation/Foundation.h> @interface UserInfo : NSObje ...

  9. JSP简单实现登录和注销

    JSP简单实现登录和注销 需求:用户登录成功后跳转到欢迎页面 用户登录失败跳转到初始的登录界面 用户点击注销,用户退出登录状态需要重新登录 登录页面的JSP代码: <%@ page langua ...

随机推荐

  1. ASP&period;NET MVC3 Razor 初心者容易遇到的問題&lpar;转&rpar;

    这是一些相关的文章地址 http://demo.tc/Post/679 http://blog.csdn.net/cheny_com/article/details/6298496

  2. Velocity

    vm模板 设计原则 让前端来写后端的vm模板,并且前端不需要搭建各种繁杂的后端环境,前后端以 .vm 为沟通桥梁,另外模板的数据源可以在项目开始前前后端约定之后生成JSON文件,从而使两个角色并行开发 ...

  3. log4j&colon;ERROR Category option &quot&semi; 1 &quot&semi; not a decimal integer&period;错误解决

    log4j.properties 的配置文件中: log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }: ...

  4. Round&num;534 div&period;2-B Game with string

    唔,第一次参加,掉了好多分. http://codeforces.com/contest/1104/problem/B 不用考虑太多,string真的好厉害. #include<stdio.h& ...

  5. js:基于原生js的上啦下啦刷新功能

    链接:https://www.jianshu.com/p/a8392115e6f0演示地址:http://wonghan.cn/iscroll-demo/html:<body> <d ...

  6. rabbitmq的五种工作模式

    abbitmq的五种工作模式      

  7. python--&lowbar;&lowbar;init&lowbar;&lowbar;&lpar;&rpar;方法和&lowbar;&lowbar;new&lowbar;&lowbar;&lpar;&rpar;方法

    这两个方法是python类中的基本方法,经常会在一些面试中问到.即便没有要面试之类的,学习一下其内部的原理和使用也是有必要的. 首先区分一下这两个方法: __init__:初始化方法 __new__: ...

  8. Maven学习笔记-03-Eclipse和Maven集成

    本文使用 Eclipse 集成 Maven,并创一个基于 maven的web工程 一 环境版本信息 本文使用的版本信息如下: Eclipse Version: Mars.1 Release (4.5. ...

  9. flexible

    https://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html

  10. win 控制台工作路径切换

    1.如果是同磁盘 直接cd 列如cd C:\mysql\bin 2.如果不是同一磁盘 则要2.1 d: 操作 2.2 cd D:\Software\xampp\address\mysql\bin ps ...