在小程序/mpvue中使用flyio发起网络请求「建议收藏」

在小程序/mpvue中使用flyio发起网络请求「建议收藏」Fly.js一个基于Promise的、强大的、支持多种JavaScript运行时的http请求库.有了它,您可以使用一份http请求代码在浏览器、微信小程序、Weex、Node、ReactNative、快应用中都能正常运行。同时可以方便配合主流前端框架,最大可能的实现WriteOnceRunEverywhere。上一篇文章介绍了在快应用中使用flyio,本文主要介绍一下如何在…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Fly.js 一个基于Promise的、强大的、支持多种JavaScript运行时的http请求库. 有了它,您可以使用一份http请求代码在浏览器、微信小程序、Weex、Node、React Native、快应用中都能正常运行。同时可以方便配合主流前端框架 ,最大可能的实现 Write Once Run Everywhere。上一篇文章介绍了在快应用中使用flyio,本文主要介绍一下如何在微信小程序中使用flyio。

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

问题

随着 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相似(但不完全相同)!

Fly.js 通过在不同 JavaScript 运行时通过在底层切换不同的 Http Engine来实现多环境支持,但同时对用户层提供统一、标准的Promise API。不仅如此,Fly.js还支持请求/响应拦截器、自动转化JSON、请求转发等功能,详情请参考:https://github.com/wendux/fly 。下面我们看看在微信小程序、mpvue中和中如何使用fly.

微信小程序

微信小程序采用web开发技术栈,使用JavaScript语言开发,但是JavaScript运行时和浏览器又有所不同,导致axios、jQuery等库无法在微信小程序中使用,而flyio可以。下面给出具体使用方法

引入fly

Flyio在各个平台下的标准API是一致的,只是入口文件不同,在微信小程序中引入:

Npm安装:npm install flyio --save.

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

如果您的微信小程序项目没有使用npm来管理依赖,您可以直接下载源码到您的小程序工程,下载链接wx.jswx.umd.min.js .下载任意一个,保存到本地工程目录,假设在“lib”目录,接下来引入:

var Fly=require("../lib/wx") //wx.js为您下载的源码文件
var fly=new Fly; //创建fly实例

引入之后,您就可以对fly实例进行全局配置、添加拦截器、发起网络请求了。

使用

Fly基于Promise提供了Restful API,你可以方便的使用它们,具体请参考fly 文档 。下面给出一个简单的示例

//添加拦截器
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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196103.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 办公日志管理系统_crm管理系统

    办公日志管理系统_crm管理系统日志管理系统rsyslogd什么是rsyslogdrsyslogd是一个进程,是一个日志服务,我们可以通过rpm-qc查询软件包的方式来查看[root@localhost~]#rpm-qcrsyslog/etc/logrotate.d/syslog/etc/rsyslog.conf/etc/sysconfig/rsyslog查询结果会出现三个文件:/etc/…

    2022年8月15日
    4
  • 拓扑图怎么看_拓扑排序算法图解

    拓扑图怎么看_拓扑排序算法图解一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)例如,下表是 5 趟车次的运行情况。其中,前 4 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站(2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要求。现有 m

    2022年8月10日
    6
  • 数据库锁概述[通俗易懂]

    数据库锁概述[通俗易懂]行锁和表锁主要是针对锁粒度划分的,一般分为行锁、表锁、库锁行锁:访问数据库的时候,锁定整个行数据,防止并发错误。表锁:访问数据库的时候,锁定整个表数据,防止并发错误。二者的区别:表锁:开销小,加锁快,不会出现死锁;锁定粒度大,发生锁冲突概率高,并发度最低。行锁:开销大,加锁慢,会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。乐观锁和悲观锁乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有更新这个数据,可以使用版

    2022年6月18日
    43
  • 《QTreeView+QAbstractItemModel自定义模型》:系列教程之三[通俗易懂]

    《QTreeView+QAbstractItemModel自定义模型》:系列教程之三[通俗易懂]1、了解常用的model类通过对上一节的阅读,我们知道只要具备model+view就可以显示数据。那么有哪些model类呢,从下图中我们可以看到Qt中模型类的层次结构QStandardItemModel:可以作为QListView、QTableView、QTreeView的标准model。QAbstractListModel:需要使用QListView显示数据,并配合自定义…

    2022年6月14日
    63
  • (2020.8.20)VSCode配置java环境JDK1.8

    (2020.8.20)VSCode配置java环境JDK1.8第一步:下载1.8版本的JDK,获取JDK路径jdk1.8的下载以及配置第二步:安装VScode的java插件第三步:这是文件–打开文件夹–选择创建的文件夹(JAVA)的界面进入设置面板–选择扩展–选择JavaTestRunner–打开settings.json文件第四步:在文件末尾加上JDK的文件路径,重启VSCode参考的settings.json文件配置样式可能出现的问题:Vscode中不再支持JDK8的解决方案…

    2022年10月3日
    0
  • 如何守住你的年终奖?

    如何守住你的年终奖?

    2021年6月29日
    71

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号