热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用JS面向对象+模块化封装集AJAX请求、基本数据校验、URL参数截取等功能于一身的通用工具模块

以下为封装好的工具类代码,使用方法将在后边介绍。***Createdbyxiaoqiangon20171109.*usestrict;import

以下为封装好的工具类代码,使用方法将在后边介绍。

/**
 * Created by xiaoqiang on 2017/11/09.
 */
'use strict';
import $ from 'jquery';

var _mm = {
   request : function (param) {
       var _this = this;
       $.ajax({
           type : param.method || 'get',
           url : param.url || '',
           data : param.data || '',
           dataType : param.type || 'json',
           success : function (res) {
               // 请求数据正常
              if (0 === res.status) {
                  typeof param.success === 'function' && param.success(res.data);
              }
              // 没有登录状态,强制登录
              else if (10 === res.status) {
                    _this.doLogin();
              }
              // 请求数据错误
              else if (1 === res.status) {
                  typeof param.error === 'function' && param.error(res.msg);
              }
           },
           error : function (errMsg) {
               typeof param.error === 'function' && param.error(errMsg);
           }
       });
   },
    // 获取url参数
    getUrlParam : function(name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
        var result = window.location.search.substr(1).match(reg);
        // console.log(result);
        return result ? decodeURIComponent(result[2]) : null;
    },
    // 字段的验证,支持非空、手机号、邮箱的验证
    validate : function(value, type) {
        var value = $.trim(value);
        // 非空验证
        if('require' == type) {
            return !!value;
        }
        // 手机号验证
        if('phone' == type) {
            return /^1\d{10}$/.test(value);
        }
        // 邮箱验证
        return /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/.test(value);
    },
    // 成功提示
    successTips : function(msg) {
        alert(msg || '操作成功');
    },
    // 错误提示
    errorTips : function(msg) {
        alert(msg || '哪里不对了~');
    },
    // 统一登录处理
   doLogin : function () {
       window.location.href = './user-login.html?redirect=' + encodeURIComponent(window.location.href);
   },
    goHome : function(){
        window.location.href = './index.html';
    }
};

module.exports = _mm;


使用方法介绍:代码中 var  _mm = {},相当于var _mm = new Object();即新建了一个_mm对象,并通过es6的语法module.exports = _mm暴露出去。

在需要使用到_mm对象的方法时,只需要引入当前模块,调用对应的方法并传入相关参数即可。

使用方法举例-以发送ajax请求为例:需求-->在购物车service中,实现更新购物车商品数量的方法。此时我们即可使用_mm中的request方法发送ajax请求,实现代码如下:

'use strict';

import _mm from 'util/mm.js';

var _cart = {    
     // 更新购物车商品数量
    updateProduct : function(productInfo, resolve, reject){
        _mm.request({
            url     : '/cart/update.do', // 接口地址 
            data    : productInfo,
            success : resolve,
            error   : reject
        });
    }
}
module.exports = _cart;

至此,工具类和service都已经封装完毕,那么我们应该如何使用?

在需要发送ajax请求的模块,引入_cart,即可调用updataProduct方法。代码如下:(请根据实际应用作相应修改)

import  _cart from = 'service/cart-service.js';
 
_cart.updateProduct({
        productId : productId,
        count : newCount
     }, function (res) {
          _this.renderCart(res); // 渲染购物车
     }, function (errMsg) {
          _this.showCartError();
     });


此工具类已经在真实项目用应用过,是前后端分离+模块化+面向对象的实践;毕业不久,有不足之处请见谅并指出。





推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
author-avatar
mobiledu2502853787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有