微信小程序的 javascript運行環境和瀏覽器不一樣,頁面的腳本邏輯是在JsCore
中運行,JsCore
是一個沒有窗口對象的環境,因此不能在腳本中使用window
,也沒法在腳本中操做組件,JsCore中也沒有 XmlhttpRequest對象,因此jquery 、zepto、axios這些在小程序中都不能用,而此時,正是 fly 大顯身手的時候。javascript
這是fly的第三篇文章,幫助您在微信小程序中使用fly。在閱讀本文以前,若是您還不瞭解 fly。 請先閱讀前兩篇文章:java
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微信小程序