前端外包-前端外包是一门艺术之JavaScript封装函数列表(一)


普通项目(Bootstrap+jQuery)创建全局文件app.js进行封装函数+设置全局常量+拦截
var app = {
http: function (options, success, error) {
//函数内容
},
imgHttp: function (options, success, error) {
//函数内容
}
}
ajax 封装
new Promise es6方法 需配合polyfill解决兼容问题
http: function (options) {
const promise = new Promise(function(resolve, reject) {
$.ajax({
type: options.method || 'get',
url: hosts + options.url,
dataType : 'json',
contentType : 'application/json; charset=utf-8',
data : JSON.stringify(options.data),
headers: options.headers,
xhrFields: {
withCredentials: true
},
success: function(res){
// 通过返回状态码进行成功失败回调,如接口返回格式混乱则无需判断直接成功回调
if (res.bizCode === '200') {
// 成功回调
resolve((options.sCode) ? res.bizCode : res.bizValue)
} else {
// 失败回调
reject((options.code) ? res.bizCode : res.bizAlertMsg)
}
},
error: function(){
// 失败回调
reject('网络错误')
}
});
})
return promise
}
// 调起执行
app.http({
url: "/api",
method: "post",
data: data
}).then( function (data) {
// 成功
}).catch( function (res){
//失败
})
无兼容问题封装
http: function (options, success, error) {
$.ajax({
type: options.method || 'get',
dataType: 'json',
url: host + options.url,
traditional: options.traditional,
contentType: 'application/x-www-form-urlencoded',
data: options.data,
headers: {
'UTOKEN': token
},
success: function (res) {
// 成功回调
if (success) success(res);
},
error: function (err) {
// 失败回调
if (error) error(err);
}
});
}
app.http({
method: 'GET',
url: '/logout/',
data: {
page: 1,
page_size: 10
}
}, function (res) {
// 成功
}, function(err) {
// 失败
})