在小程序/mpvue中使用flyio發起網絡請求

Fly.js 一個基於Promise的、強大的、支持多種JavaScript運行時的http請求庫. 有了它,您可使用一份http請求代碼在瀏覽器、微信小程序、Weex、Node、React Native、快應用中都能正常運行。同時能夠方便配合主流前端框架 ,最大可能的實現 Write Once Run Everywhere。上一篇文章介紹了在 快應用中使用flyio,本文主要介紹一下如何在微信小程序中使用flyio。

Flyio Github: https://github.com/wendux/flyjavascript

問題

隨着 Weex 、mpvue 的發佈,他們都是支持Vue.js語法。目前vue已經你可以運行在瀏覽器、小程序和Native了。儘管各個平臺仍有差別,但已經基本能實現 Write Once Run Everywhere 。這使得咱們能夠在多個端上實現儘量大限度在代碼複用。可是不管是 vue 仍是Weex 、mpvue,它們本質上都只是一個View層,也就說最好的狀況,也只能實現UI複用。但對於一個應用程序來講,除了UI,最重要的就是數據了,而數據來源通常都是來自網絡請求(大多數都是http)。在使用這些框架時,您的網絡請求,都須要使用平臺特定的API!這很糟糕,意味着您網絡請求的代碼不能複用,因此儘管UI能夠複用,但咱們還須要去適配網絡請求部分的代碼。前端

Flyio簡介

要上述問題,就須要一個能支持多個平臺網絡庫,用戶層提供統一的API,將平臺差別在底層屏蔽。而 Fly.js就是這醬紫的一個網絡庫,爲了方便axios使用者遷移,fly.js API設計風格和axios類似(但不徹底相同)!vue

Fly.js 經過在不一樣 JavaScript 運行時經過在底層切換不一樣的 Http Engine來實現多環境支持,但同時對用戶層提供統1、標準的Promise API。不只如此,Fly.js還支持請求/響應攔截器、自動轉化JSON、請求轉發等功能,詳情請參考:https://github.com/wendux/fly 。下面咱們看看在微信小程序、mpvue中和中如何使用fly.java

微信小程序

微信小程序採用web開發技術棧,使用JavaScript語言開發,可是JavaScript運行時和瀏覽器又有所不一樣,致使axios、jQuery等庫沒法在微信小程序中使用,而flyio能夠。下面給出具體使用方法ios

引入fly

Flyio在各個平臺下的標準API是一致的,只是入口文件不一樣,在微信小程序中引入:git

Npm安裝:npm install flyio --save.github

var Fly=require("flyio/dist/npm/wx") 
var fly=new Fly

若是您的微信小程序項目沒有使用npm來管理依賴,您能夠直接下載源碼到您的小程序工程,下載連接wx.jswx.umd.min.js .下載任意一個,保存到本地工程目錄,假設在「lib」目錄,接下來引入:web

var Fly=require("../lib/wx") //wx.js爲您下載的源碼文件
var fly=new Fly; //建立fly實例

引入以後,您就能夠對fly實例進行全局配置、添加攔截器、發起網絡請求了。npm

使用

Fly基於Promise提供了Restful API,你能夠方便的使用它們,具體請參考fly 文檔 。下面給出一個簡單的示例axios

//添加攔截器
fly.interceptors.request.use((config,promise)=>{
    //給全部請求添加自定義header
    config.headers["X-Tag"]="flyio";
    return config;
})
//配置請求基地址
fly.config.baseURL='http://www.dtworkroom.com/doris/1/2.0.0/'
...

Page({
  //事件處理函數
  bindViewTap: function() {
    //發起get請求
    fly.get("/test",{xx:6}).then((d)=>{
      //輸出請求數據
      console.log(d.data)
      //輸出響應頭
      console.log(d.header)
    }).catch(err=>{
      console.log(err.status,err.message)
    })
    ...
  })
})

在mpvue中使用

mpvue 中您也能夠將fly實例掛在vue原型上,這樣就能夠在任何組件中經過this方便的調用:

var Fly=require("flyio/dist/npm/wx") 
var fly=new Fly
... //添加全局配置、攔截器等
Vue.prototype.$http=fly //將fly實例掛在vue原型上

在組件中您能夠方便的使用:

this.$http.get("/test",{xx:6}).then((d)=>{
      //輸出請求數據
      console.log(d.data)
      //輸出響應頭
      console.log(d.header)
    }).catch(err=>{
      console.log(err.status,err.message)
    })

反饋

若是您有問題歡迎在 在github 提issue . fly.js github: github.com/fly

相關文章
相關標籤/搜索