国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

詳解mpvue開(kāi)發(fā)小程序小總結(jié)

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:11:06
文檔

詳解mpvue開(kāi)發(fā)小程序小總結(jié)

詳解mpvue開(kāi)發(fā)小程序小總結(jié):最近用mpvue開(kāi)發(fā)了一個(gè)小程序,現(xiàn)總結(jié)一下碰見(jiàn)的問(wèn)題及解決方案 1.項(xiàng)目中數(shù)據(jù)請(qǐng)求用到了fly.io,封裝成request.js如下: import wx from 'wx' import Fly from 'flyio' import store from '../store/index' const fl
推薦度:
導(dǎo)讀詳解mpvue開(kāi)發(fā)小程序小總結(jié):最近用mpvue開(kāi)發(fā)了一個(gè)小程序,現(xiàn)總結(jié)一下碰見(jiàn)的問(wèn)題及解決方案 1.項(xiàng)目中數(shù)據(jù)請(qǐng)求用到了fly.io,封裝成request.js如下: import wx from 'wx' import Fly from 'flyio' import store from '../store/index' const fl

最近用mpvue開(kāi)發(fā)了一個(gè)小程序,現(xiàn)總結(jié)一下碰見(jiàn)的問(wèn)題及解決方案

1.項(xiàng)目中數(shù)據(jù)請(qǐng)求用到了fly.io,封裝成request.js如下:

import wx from 'wx'
import Fly from 'flyio'
import store from '../store/index'

const fly = new Fly()

fly.config.baseURL = process.env.BASE_URL
fly.config.timeout = 5000

//http 請(qǐng)求攔截器
fly.interceptors.request.use((config) => {
 wx.showNavigationBarLoading()//導(dǎo)航條加載動(dòng)畫(huà)
 //給所有請(qǐng)求添加自定義header
 if (store.getters.accessToken) {
 config.headers['Authorization'] = `JWT ${store.getters.accessToken}`
 }
 config.headers['X-Tag'] = 'flyio'
 return config
})

//http 響應(yīng)攔截器
fly.interceptors.response.use((response) => {
 wx.hideNavigationBarLoading()//導(dǎo)航條加載動(dòng)畫(huà)
 const res = response.data
 if (res.status === 0 && (res.errCode === 401 || res.errCode === 403)) {
 //跳轉(zhuǎn)到登錄頁(yè)面
 wx.redirectTo({
 url: '/pages/welcome/main',
 })
 }
 return res
 },
 (err) => {
 wx.hideNavigationBarLoading()//導(dǎo)航條加載動(dòng)畫(huà)
 //發(fā)生網(wǎng)絡(luò)錯(cuò)誤后會(huì)走到這里
 return Promise.reject(err.response)
 },
)

export default fly

2.有關(guān)登錄的處理:

這個(gè)項(xiàng)目中用到了一個(gè)登錄頁(yè),用戶(hù)登錄態(tài)失效也會(huì)跳轉(zhuǎn)到登錄頁(yè)login.js

import wx from 'wx'
import { loginByCode } from '../api/weAppAuth' //登錄接口
import store from '../store'

/**
 * 登錄
 * @returns {Promise<any>}
 */
export function weAppLogin () {
 return new Promise((resolve, reject) => {
 // 先調(diào)用 wx.login 獲取到 code
 wx.login({
 success: (res) => {
 wx.getUserInfo({
 lang: 'zh_CN',
 success: ({rawData, signature, encryptedData, iv, userInfo}) => {
 let data = {
 code: res.code,
 rawData,
 signature,
 encryptedData,
 iv,
 userInfo,
 }
 // console.log(JSON.stringify(data))
 loginByCode(data).then(res => {
 // 該為我們后端的邏輯 若code > 0為登錄成功,其他情況皆為異常 (視自身情況而定)
 if (res.status === 1) {
 // 保存用戶(hù)信息相關(guān)操作
 ...
 resolve(res)
 } else {
 reject(res)
 }
 }).catch(err => {
 reject(err)
 })
 },
 // 若獲取不到用戶(hù)信息 (最大可能是用戶(hù)授權(quán)不允許,也有可能是網(wǎng)絡(luò)請(qǐng)求失敗,但該情況很少)
 fail: (err) => {
 reject(err)
 },
 })
 },
 })
 })
}

welcome.vue

 <button
 class="default-btn "
 open-type="getUserInfo"
 @getuserinfo="onGotUserInfo"
 type="primary"
 >
 微信登錄
</button>

 methods: {
 //登錄
 onGotUserInfo ({mp}) {
 const {detail} = mp
 if (!detail.rawData) {
 Dialog({
 title: '重新授權(quán)',
 message: '需要獲取您的公開(kāi)信息(昵稱(chēng)、頭像等),請(qǐng)點(diǎn)擊"微信登錄"進(jìn)行授權(quán)',
 confirmButtonText: '確定',
 confirmButtonColor: '#373737',
 })
 } else {
 weAppLogin().then(res => {
 console.log(res)
 Toast({
 type: 'success',
 message: '登錄成功',
 selector: '#zan-toast-test',
 timeout:1000
 })
 setTimeout(() => {
 wx.switchTab({
 url: '/pages/index/main',
 })
 }, 1000)
 }).catch(err => {
 console.log(err)
 })
 }
 },
 },

3.支付方法封裝成promise

import wx from 'wx'

/**
 * 支付
 * @param data
 * @returns {Promise<any>}
 */
export function wechatPay (data) {
 const {timeStamp, nonceStr, signType, paySign} = data
 return new Promise((resolve, reject) => {
 wx.requestPayment({
 timeStamp: timeStamp,
 nonceStr: nonceStr,
 package: data.package,
 signType: signType,
 paySign: paySign,
 success: (res) => {
 resolve(res)
 },
 fail: (err) => {
 reject(err)
 },
 })
 })
}

4.使用騰訊云存儲(chǔ)上傳圖片

項(xiàng)目中使用了cos-wx-sdk-v5

封裝upload.js方法:

const COS = require('../../static/js/cos-wx-sdk-v5')
import fly from './request'

export const Bucket = process.env.Bucket
export const Region = process.env.Region

// 文件擴(kuò)展名提取
export function fileType (fileName) {
 return fileName.substring(fileName.lastIndexOf('.') + 1)
}

// 名稱(chēng)定義
export function path(id, type, fileType) {
 const date = new Date()
 const year = date.getFullYear()
 const month = date.getMonth() + 1
 const day = date.getDate()
 var time = date.toTimeString()
 time = time.substr(0, 8)
 time = time.replace(/:/g, '-')
 return `/mobile/groups/${id}/${type}/` +
 (year + '-' + (month < 10 ? '0' + month : String(month)) + '-' +
 (day < 10 ? '0' + day : String(day)) + '-' + time) + '.' + fileType
}

// base64轉(zhuǎn)換成file文件
export function Base64ToBlob (urlData) {
 // 去掉url的頭,并轉(zhuǎn)換為byte
 let bytes = window.atob(urlData.split(',')[1])

 // 處理異常,將ascii碼小于0的轉(zhuǎn)換為大于0
 let ab = new ArrayBuffer(bytes.length)
 let ia = new Uint8Array(ab)
 for (let i = 0; i < bytes.length; i++) {
 ia[i] = bytes.charCodeAt(i)
 }
 return new Blob([ab], {
 type: 'image/png',
 })
}

export const cos = new COS({
 getAuthorization: (options, callback) => {
 let url = '/qcloud/cos_sign'
 fly.request({
 url: url,
 method: 'post',
 body: {
 method: (options.Method || 'get').toLowerCase(),
 pathname: '/' + (options.Key || ''),
 },
 }).then(res => {
 callback(res.data.authorization)
 }).catch(err => {
 console.log(err)
 })

 //本地測(cè)試
 /*let authorization = COS.getAuthorization({
 SecretId: '你的id',
 SecretKey: '你的key',
 Method: options.Method,
 Key: options.Key,
 })
 callback(authorization)*/
 },
})

小程序上傳多圖時(shí)保證圖片均上傳到cos服務(wù)器再執(zhí)行其余操作:

//選擇圖片
chooseImage () {
 wx.chooseImage({
 count: this.chooseImageNum,
 sizeType: ['original'],
 sourceType: ['album', 'camera'],
 success: (res) => {
 this.imageList = [...this.imageList, ...res.tempFilePaths]
 },
 })

},

uploadImg (data, index) {
 return new Promise((resolve, reject) => {
 let filePath = data
 let fileName = path(this.id, 'test',
 fileType(filePath.substr(filePath.lastIndexOf('/') + 1))) + index
 cos.postObject({
 Bucket: Bucket,
 Region: Region,
 Key: fileName,
 FilePath: filePath,
 }, (err, res) => {
 if (res.statusCode === 200) {
 let item = {
 imageUrl: res.Location,
 }
 this.data.imageList.push(item)
 resolve(res)
 } else {
 reject(err)
 }
 })

 })
},
//上傳圖片
 upload () {
 return new Promise((resolve, reject) => {
 //沒(méi)有圖片
 if (this.imageList.length === 0) {
 let data = {
 statusCode: 200,
 }
 resolve(data)
 return
 }
 //有圖片
 let all = []
 for (let i = 0; i < this.imageList.length; i++) {
 all.push(this.uploadImg(this.imageList[i], i))
 }
 Promise.all(all).then(res => {
 resolve(res)
 }).catch(err => {
 reject(err)
 })
 })
},

handleSubmit(){
 this.upload().then(res=>{
 //執(zhí)行剩余步驟
 }).catch(err=>{
 console.log(err)
 })
}

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解mpvue開(kāi)發(fā)小程序小總結(jié)

詳解mpvue開(kāi)發(fā)小程序小總結(jié):最近用mpvue開(kāi)發(fā)了一個(gè)小程序,現(xiàn)總結(jié)一下碰見(jiàn)的問(wèn)題及解決方案 1.項(xiàng)目中數(shù)據(jù)請(qǐng)求用到了fly.io,封裝成request.js如下: import wx from 'wx' import Fly from 'flyio' import store from '../store/index' const fl
推薦度:
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top
主站蜘蛛池模板: 久久99精品国产99久久 | 色精品一区二区三区 | 久久伊人一区二区三区四区 | 国产欧美在线播放 | 久久精品一区二区三区四区 | 亚洲第一视频网 | 青青草原国产一区二区 | 精品国产一区二区在线观看 | 国产精品欧美韩国日本久久 | 免费网站看v片在线成人国产系列 | 久久亚洲欧美综合激情一区 | 欧美精品一区二区三区在线 | 在线观看欧美一区 | 欧美激情爱爱 | 亚洲精品午夜国产va久久成人 | 国产欧美视频在线观看 | 亚洲一区二区三区久久精品 | 国产精品一区二区久久不卡 | 亚洲欧美一区二区三区久本道 | 国产最新在线视频 | 国产精品成人久久久久久久 | 欧美日本在线视频 | 91久久精品国产免费一区 | 欧美一级久久久久久久大片 | 在线观看免费精品国自产 | 一级毛片成人免费看a | 欧美日韩视频一区三区二区 | 国产精品亚洲国产三区 | 亚洲 欧美 日韩 另类 | 亚洲图片欧美日韩 | 激情欧美一区二区三区 | 2020精品极品国产色在线观看 | 国产亚洲一区二区精品 | 三级网站免费播放国语 | 福利片一区二区 | 亚洲国产精品成人综合久久久 | 欧美色图在线观看 | 欧美日韩中文字幕 | 青青国产成人久久91网 | 欧美精品在线免费 | 91精品成人免费国产片 |