微信小程序中使用Fly.js 發起http請求

微信小程序的 javascript運行環境和瀏覽器不一樣,頁面的腳本邏輯是在JsCore中運行,JsCore是一個沒有窗口對象的環境,因此不能在腳本中使用window,也沒法在腳本中操做組件,JsCore中也沒有 XmlhttpRequest對象,因此jquery 、zepto、axios這些在小程序中都不能用,而此時,正是 fly 大顯身手的時候。javascript

這是fly的第三篇文章,幫助您在微信小程序中使用fly。在閱讀本文以前,若是您還不瞭解 fly。 請先閱讀前兩篇文章:java

第一篇: JS HTTP 請求終極解決方案 - fly.js jquery

第二篇: Fly vs axiosios

下載

github.com/wendux/fly/…
github.com/wendux/fly/… (8kb)
下載任意一個, 而後將其拷貝到您的工程目錄下。git

使用

var Fly=require("../lib/wx.js") //wx.js爲您下載的源碼文件
var fly=new Fly();建立fly實例
...
Page({
  //事件處理函數
  bindViewTap: function() {
    //調用
    fly.get("http://10.10.180.81/doris/1/1.0.0/user/login",{xx:6}).then((d)=>{
      console.log(d.data)
    }).catch(err=>{
      console.log(err.status,err.message)
    })
  })
})複製代碼

若是您只是單純的使用者,不用往下看了,到這裏就能夠了,先別急着關啊,來,star一下再走 github.com/wendux/fly 。 若是你對原理感興趣,下面介紹一下背後的原理。github

原理

Fly對小程序的支持其實是經過自定義 http engine的方式,咱們來看一下wx.js源碼:npm

//微信小程序入口
var  Fly=require("../dist/fly")
var EngineWrapper = require("../dist/engine-wrapper")
var adapter = require("../dist/adapter/wx") //微信小程序adapter
var wxEngine = EngineWrapper(adapter)
module.exports=function (engine) {
    return new Fly(engine||wxEngine);
}複製代碼

能夠看出,關鍵代碼就在adapter/wx中,咱們看看微信小程序的adapter代碼:axios

//微信小程序適配器
module.exports=function(request, responseCallback) {
    var con = {
        method: request.method,
        url: request.url,
        dataType: request.dataType||"text",
        header: request.headers,
        data: request.body||{},
        success(res) {
            responseCallback({
                statusCode: res.statusCode,
                responseText: res.data,
                headers: res.header,
                statusMessage: res.errMsg
            })
        },
        fail(res) {
            responseCallback({
                statusCode: res.statusCode||0,
                statusMessage: res.errMsg
            })
        }
    }
    //調用微信接口發出請求
    wx.request(con)
}複製代碼

這就是全部的實現,很簡單!經過這個例子,能夠幫助您理解 「fly正是經過不一樣的adpter來支持不一樣的環境」 這句話,至於其它的環境,咱們徹底能夠照貓畫虎。小程序

最後

再次貼出fly github地址,若是你喜歡,歡迎star,以使更多的人知道fly,感謝您的支持:github.com/wendux/fly微信小程序

相關文章
相關標籤/搜索