微信小程序开发之使用Fly发起http请求
安安 2017-10-18 来源 :网络 阅读 2031 评论 0

摘要: 微信小程序开发的 javascript运行环境和浏览器不同,页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件,JsCore中也没有 XmlhttpRequest对象,所以jquery 、zepto、axios这些在小程序中都不能用,而此时,正是 fly 大显身手的时候。

微信小程序的 javascript运行环境和浏览器不同,页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件,JsCore中也没有 XmlhttpRequest对象,所以jquery 、zepto、axios这些在小程序中都不能用,而此时,正是 fly 大显身手的时候。


您需要在 https://unpkg.com/flyio/dist/ 或 https://github.com/wendux/fly/tree/master/dist 下载wx.js(未压缩) 或 wx.umd.min.js(已压缩,12k)任意一个, 然后将其拷贝到您的工程目录下。

 微信小程序开发之使用Fly发起http请求

使用

1. var Fly=require("../lib/wx.js") //wx.js为您下载的源码文件 

2. var fly=new Fly();创建fly实例 

3. ... 

4. Page({ 

5.   //事件处理函数 

6.   bindViewTap: function() { 

7.     //调用 

8.     fly.get("//10.10.180.81/doris/1/1.0.0/user/login",{xx:6}).then((d)=>{ 

9.       console.log(d.data) 

10.     }).catch(err=>{ 

11.       console.log(err.status,err.message) 

12.     }) 

13.   }) 

14. }) 

15.  

16.  

17. 作者:lazydu 

18. 链接://www.jianshu.com/p/2d0a1ad94ed5 

19. 來源:简书 

20. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 

如果您只是单纯的使用者,不用往下看了,到这里就可以了,先别急着关啊,来,star一下再走 https://github.com/wendux/fly 。 如果你对原理感兴趣,下面介绍一下背后的原理。

原理

Fly对小程序的支持实际上是通过自定义 http engine的方式,我们来看一下wx.js源码:

1. //微信小程序入口 

2. var  Fly=require("../dist/fly") 

3. var EngineWrapper = require("../dist/engine-wrapper") 

4. var adapter = require("../dist/adapter/wx") //微信小程序adapter 

5. var wxEngine = EngineWrapper(adapter) 

6. module.exports=function (engine) { 

7.     return new Fly(engine||wxEngine); 

8. } 

9.  

10.  

11. 作者:lazydu 

12. 链接://www.jianshu.com/p/2d0a1ad94ed5 

13. 來源:简书 

14. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 

可以看出,关键代码就在adapter/wx中,我们看看微信小程序的adapter代码:

1. //微信小程序适配器 

2. module.exports=function(request, responseCallback) { 

3.     var con = { 

4.         method: request.method, 

5.         url: request.url, 

6.         dataType: request.dataType||"text", 

7.         header: request.headers, 

8.         data: request.body||{}, 

9.         success(res) { 

10.             responseCallback({ 

11.                 statusCode: res.statusCode, 

12.                 responseText: res.data, 

13.                 headers: res.header, 

14.                 statusMessage: res.errMsg 

15.             }) 

16.         }, 

17.         fail(res) { 

18.             responseCallback({ 

19.                 statusCode: res.statusCode||0, 

20.                 statusMessage: res.errMsg 

21.             }) 

22.         } 

23.     } 

24.     //调用微信接口发出请求 

25.     wx.request(con) 

26. } 

27.  

28.  


这就是所有的实现,很简单!通过这个例子,可以帮助您理解 “fly正是通过不同的adpter来支持不同的环境” 这句话,至于其它的环境,我们完全可以照猫画虎。 


本文由职坐标整理并发布,希望对同学们学习微信开发的知识有所帮助。了解更多详情请关注职坐标微信开发频道!


本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程