первая речь
Прошло почти два года с тех пор, как я перешел на фронт самообучения.Я тоже преданный фанат Цзяньшу и Наггетс, но раньше я дорожил словами как золото (это было реально трусливо и мой уровень был низкий), а теперь решил относиться к деньгам как к навозу (это просто кожа).Толстая, уровень такой), ну не будем чушь нести, давайте по теме, я недавно пробовал разработку мелких программ, всегда есть некоторые подводные камни, но я думаю, что часть запроса действительно уродлива, так что вы знаете, я использую Promise для простой инкапсуляции запроса. Метод, описанный в этой статье, в основном предназначен для стороннего входа в систему.
Без лишних слов вставьте код напрямую:
js, связанный с бизнесом
// 获取剩余金额 --- GET 请求无参数
getBalance: function () {
api.getBalance().then(data => {
let balance = data.data
balance.balance = balance.balance.toFixed(2)
this.setData({
balance: { ...balance }
})
})
},
// 获取昨日消费数据 --- POST 请求,使用 application/x-www-form-urlencoded 传参
getLastCost: function () {
let yestoday = util.transDate('', -1)
let data = {
subAccountIdx: 0,
startDay: yestoday,
endDay: yestoday,
type: 0,
business: 0,
export: false
}
api.getLastCost(data, 'application/x-www-form-urlencoded', 'POST').then(data => {
let lastCost = data.data.record.totalConsumeMoney
lastCost = lastCost.toFixed(2)
this.setData({
lastCost: lastCost
})
})
}
Из вышеприведенного кода код бизнес части.Не знаю понравится ли вам этот метод.Далее давайте посмотрим на конфигурацию js соответствующую методу инкапсуляции и бизнесу.
Оберните wx.request с обещанием
Большинство наших веб-сайтов используют куки для поддержания состояния входа в систему, но апплет не может использовать куки для поддержания состояния входа в систему, поэтому мы сначала получаем куки в заголовке запроса, а затем сохраняем куки в глобальной переменной (я полагаю, что получение куки точно не нужны.Проблема,эта часть показываться не будет)
// wx.request 封装
var app = getApp()
function wxRequest(url, config, resolve, reject) {
let {
data = {},
contentType = 'application/json',
method = 'GET',
...other
} = {...config}
wx.request({
url: url,
data: {...data},
method: method,
header: {
'content-type': contentType,
'Cookie': app.globalData.cookie // 全局变量中获取 cookie
},
success: (data) => resolve(data),
fail: (err) => reject(err)
})
}
module.exports = {
wxRequest: wxRequest
}
Инкапсулированный код очень прост, следующим шагом будет настройка кода
Конфигурация js соответствующая бизнесу
// 用 import 或者 require 引入模块
import util from '../../../util/util.js'
var Promise = require('../../../plugin/promise.js') // 请注意 Promise 要手动引入,内测版是自动引入的
// 获取个人信息
const API_USERINFO = "https://www.***/get"
// 获取剩余金额
const API_BALANCE = 'https://www.***/get'
// 获取昨日消费数据
const API_LASTCOST = 'https://www.***/get'
// 获取个人信息事件
function getUserInfo(data, contentType) {
var promise = new Promise((resolve, reject) => {
util.wxRequest(API_USERINFO, { data, contentType }, resolve, reject)
})
// return promise
return promise.then(res => {
return res.data
}).catch(err => {
console.log(err)
})
}
// 获取剩余金额事件
function getBalance(data, contentType) {
var promise = new Promise((resolve, reject) => {
util.wxRequest(API_BALANCE, { data, contentType }, resolve, reject)
})
// return promise
return promise.then(res => {
return res.data
}).catch(err => {
console.log(err)
})
}
// 获取昨日消费数据
function getLastCost(data, contentType, method) {
var promise = new Promise((resolve, reject) => {
util.wxRequest(API_LASTCOST, { data, contentType, method }, resolve, reject)
})
// return promise
return promise.then(res => {
return res.data
}).catch(err => {
console.log(err)
})
}
module.exports = {
getUserInfo: getUserInfo,
getBalance: getBalance,
getLastCost: getLastCost
}
Вышеприведенный код выглядит так, как будто шагов больше, но преимущество этого в том, что его легко поддерживать.В бизнес-коде вам нужно сосредоточиться только на бизнесе, а не на самом запросе, и переключение типа контента также удобно.Конечно если ваш метод передачи параметров есть только один который можно записать насмерть.Он проще.Как первая статья новичка фронтенда,надеюсь помочь нескольким людям.Надеюсь что большой ребята подскажут и подскажут.