以下为封装好的工具类代码,使用方法将在后边介绍。
-
-
-
- '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);
- }
- });
- },
-
- getUrlParam : function(name) {
- var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
- var result = window.location.search.substr(1).match(reg);
-
- 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();
- });
此工具类已经在真实项目用应用过,是前后端分离+模块化+面向对象的实践;毕业不久,有不足之处请见谅并指出。