微信小程序搭建mpvue+vant+flyio

导语

上一篇文章微信小程序搭建mpvue+vant已经介绍了如何搭起mpvue项目及引入vant,本篇文章继续在它的基础上,引入flyio,并做一些封装,目的是为了在小程序发起请求。

这时读者会有些疑问,小程序已经有了request,为什么还用flyio?这不是造轮子吗?我是这么想的,其实现在不管是mpvue,还是wepy都好像还不能完美编译出微信小程序和h5版本。为了以后应对老板有创建h5版本的想法,我们应该为以后复用小程序代码做好准备工作。既然h5也会有ajax,flyio也支持小程序和h5的,所以干脆把flyio引进来,再做一些封装,两边都能用,岂不美哉?

文章末尾,附文章教程步骤创建的项目mpvue+vant+flyio,需要学习的同学,拿走不谢。

第一步:将flyio加入项目

我的项目路径:/Users/hrz/myworkspace/lawyer-card-wxss

$ cd /Users/hrz/myworkspace/lawyer-card-wxss
$ cnpm i flyio -S --production

正确姿势

第二步:二次封装

创建api文件夹,并在下面新建两个文件api.jshttpRequest.js

正确姿势

api.js 用来给各页面调用,是一个汇总各类ajax方法的集合

import requestService from ‘./httpRequest‘

const PROD_SERVICE = ‘https://我的线上产品域名/lawyer-card-service‘
const DEV_SERVICE = ‘http://localhost:8081/lawyer-card-service‘

/**
 * 根据开发环境返回接口url
 * @returns {string}
 */
function getSerive () {
  if (process.env.NODE_ENV === ‘production‘) {
    return PROD_SERVICE
  } else {
    return DEV_SERVICE
  }
}

/** wx.request服务封装 */
export default {

  /**
   * 检查微信Token是否还生效
   * @param data
   * @param callBack
   */
  checkToken (data, callBack, failCallBack) {
    requestService.sendRequest().url(getSerive() + ‘/auth/checkToken‘).method(‘GET‘).data(data).success(res => {
      callBack(res)
    }).fail(res => {
      failCallBack(res)
    }).send()
  }
}

httpRequest.js是对flyio对二次封装,是ajax的核心

import {getStorageSync, hideLoading, showLoading, showNotify} from ‘../utils/index‘

var Fly = require(‘flyio/dist/npm/wx‘)
var fly = new Fly()
// 设置超时
fly.config.timeout = 7000

// 添加请求拦截器
fly.interceptors.request.use((request) => {
  // 给所有请求添加自定义header
  const token = getStorageSync(‘token‘)
  request.headers[‘token‘] = token
  return request
})

/**
 * request服务封装
 */
export default {
  sendRequest
}

function sendRequest () {
  return {
    _sucCallback: null,
    _failCallback: null,
    _method: ‘GET‘,
    _data: {},
    _header: {‘content-type‘: ‘application/x-www-form-urlencoded;charset=UTF-8‘},
    _url: ‘‘,
    send: function () {
      showLoading({
        title: ‘加载中...‘
      })

      fly.request(this._url, this._data, {
        method: this._method,
        headers: this._header
      })
        .then(res => {
          hideLoading()
          let error = httpHandlerError(res, this._failCallback)
          if (error) return
          this._sucCallback(res)
        })
        .catch((res) => {
          hideLoading()
          httpHandlerError(res, this._failCallback)
        })

      return this
    },
    success: function (callback) {
      this._sucCallback = callback
      return this
    },
    fail: function (callback) {
      this._failCallback = callback
      return this
    },
    url: function (url) {
      this._url = url
      return this
    },
    data: function (data) {
      this._data = data
      return this
    },
    method: function (method) {
      this._method = method
      return this
    },
    header: function (header) {
      this._header = header
      return this
    }
  }
}

/**
 * info 请求完成后返回信息
 * callBack 回调函数
 * errTip 自定义错误信息
 */
function httpHandlerError (info, callBack) {
  hideLoading()
  /** 请求成功,退出该函数 可以根据项目需求来判断是否请求成功。这里判断的是status为200的时候是成功 */
  let haveError = true
  let errTip
  if (info.status === 200) {
    if (info.data.code === undefined) {
      haveError = true
    } else if (info.data.code === ‘success‘ || info.data.code === 0) {
      haveError = false
    } else {
      haveError = true
      errTip = info.data.msg
    }
  } else {
    errTip = ‘网络请求出现了错误【‘ + info.status + ‘】‘
    haveError = true
  }

  if (haveError) {
    /** 发生错误信息时,如果有回调函数,则执行回调 */
    if (callBack) {
      callBack(info)
    } else {
      showNotify(errTip)
    }
  }
  return haveError
}

大家看到,httpRequest.js里引用一些工具类,其实里面主要是一些加载的提示,及弹框。为什么我要把他放在工具类里?正如我最开头导语说的,为了方便以后应对h5版本,H5版本的加载、弹框、操作缓存和小程序的代码不一样,所以我统一放在工具类里管理了,以后要做h5开发,我只要改工具类就行了。下面是小程序里工具类的代码。

import Notify from ‘vant-weapp/dist/notify/notify‘

/**
 * 显示顶部红色通知
 * 使用方法:调用时确保界面上有:
 * <van-notify id="van-notify"/>
 * @param msg
 * @param showTime
 */
export function showNotify (msg, showTime) {
  if (!showTime) {
    showTime = 3000
  }
  Notify({
    text: msg,
    duration: showTime
  })
}

/**
 * 从缓存里获取数据
 * @param key
 * @return value
 */
export function getStorageSync (key) {
  return wx.getStorageSync(key)
}

/**
 * 显示加载中
 * @param data
 */
export function showLoading (data) {
  wx.showLoading(data)
}

/**
 * 隐藏加载中
 */
export function hideLoading () {
  wx.hideLoading()
}

/**
 * 将数据保存到缓存
 * @param key
 * @param value
 */
export function setStorageSync (key, value) {
  wx.setStorageSync(key, value)
}

export default {
  getStorageSync,
  setStorageSync,
  showLoading,
  hideLoading,
  showNotify
}

第三步:写个Demo发送请求

<template>
 <div>
   {{msg}}
 </div>
</template>

<script>
 import Api from ‘../../apis/api‘

 export default {
   data () {
     return {
       msg: null
     }
   },

   methods: {},

   onLoad () {
     let that = this
     let token = ‘eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNTU0MjA0NDI0LCJleHAiOjE1NTQ4MDkyMjR9.VdlhGXOxIA97_G_u_a3GJxmWdD9t_jb_a1aodTJ75ESNgxchx8M0mRBSx-s_er8Da4MzZY1zBW4UfY5ELC9fgA‘
     Api.checkToken({‘token‘: token}, function (res) {
       console.log(res)
       that.msg = res.data.msg
     })
   }
 }
</script>

<style scoped>
</style>

正确姿势

运行npm run dev起来,去小程序开发工具看效果

正确姿势

已经成功发送请求,还是不错的!

我创建了名字为mpvue-vant-flyio项目,除了项目名称不同,步骤都是相同的。项目源码

转载链接:https://www.jianshu.com/p/b308a89f8180

原文地址:https://www.cnblogs.com/blogsaspx/p/11291406.html

时间: 2024-08-02 00:24:09

微信小程序搭建mpvue+vant+flyio的相关文章

为苹果ATS和微信小程序搭建 Nginx + HTTPS 服务

昨天测试开发微信小程序,才发现微信也要求用HTTPS加密数据,想来是由于之前苹果的ATS审核政策的缘故吧,微信想在苹果上开放小程序必然也只能要求开发者必须使用HTTPS了,于是在服务器上测试安装Nginx+HTTPS服务. 安装 HTTPS 最麻烦的问题应该就是获取证书了,证书感觉种类也挺复杂的,有好几种,单域.泛域.多域...还有个种标准乱七八糟的感觉,而且收费很高,还是每年买的. 现在各个云服务商也都有提供各种基础功能的免费证书,但似乎很多只对单域免费,这里的单域是指每个二级域名都算是一个域

原生微信小程序 wepy mpvue对比

小程序支持的是 WXML + WXSS + JS 这样的组合,所以,wepy 和 mpvue 都是将文件构建到 dist 目录,转换为小程序支持的文件类型,然后将微信开发者工具指向 dist 目录下,进行调试开发,并且两者都提供了热更新. 原文地址:https://www.cnblogs.com/ceceliahappycoding/p/10952092.html

mpvue搭建微信小程序

最初,我电脑已经搭建成功相应的环境配置,于是可以直接创建微信小程序,如第一次,可参考https://www.cnblogs.com/donglt-5211/p/9369098.html搭建 步骤一:创建一个基于 mpvue-quickstart 模板的新项目 vue init mpvue/mpvue-quickstart my-wechat 步骤二:依次运行 cd my-wechat, npm install ,npm run dev; 步骤三:已经生成了------小程序代码的目录,文件夹"d

mpvue 应用 Vant Weapp框架开发微信小程序

今天在使用mpvue开发微信小程序的过程中需要实现一个底部上拉选择列表的功能,因为之前做过H5微信公众号的开发,使用的就是有赞的Vant-ui,所以第一时间就想到了有赞的Vant Weapp UI框架,就找到了官网,根据官网的操作说明开始一顿操作,但是妈的发现并没有什么卵用, 这是官网上的安装说明,使用npm安装,但本人实属功底太浅,在main.js中不知道怎么import进去,然后就采用第二种方法,就在pages文件夹下面的每一个页面中的main.js中添加usingComponents,但是

用mpvue构建微信小程序

背景 由于机器人协会进行鼓励大家多读书的活动,所以为了可以更好的.更有效果,所以我跟会长提了一个建议,做一个微信小程序,那么为什么是微信小程序呢? 1.现在微信小程序比较好,用户也比较多:利用微信小程序做推广,效果好: 2.小程序的痛点在于不需要在手机里额外安装app,利用微信提供的入口,用时扫码,用后清除: 3.开发周期与开发难度小于原生app. 技术栈 采用前后端分离 1.Vue全家桶 2.mpvue 3.koa2+mysql 构建过程 1.安装工作 a)安装好node b)安装vue-cl

用mpvue写微信小程序时,webview跳转外部链接,再跳转回来需要点两次返回箭头才能跳转

问题描述: 给公司做微信小程序时遇到了这个问题,用mpvue框架搭建的小程序,从首页点击进去,先跳转到一个中间页面,在中间页面放上webview链接到外部的H5页面,这时点击小程序左上角自带的返回按钮,第一次会跳转到空白页,再点一次才能跳转到首页. 首页: 详情页: 这时需要点击左上角的返回箭头两次,才能跳转到首页 解决办法: 小程序跳到外部页面方法: 1.从首页(index)跳转到中间页(template): goPage(id){ wx.navigateTo({url:'../templat

微信小程序的开发环境搭建(Windows版本)

前言: 小程序是指微信公众平台小程序,小程序可以帮助开发者快速的开发小程序,小程序可以在微信内被便捷地获取和传播:是一种不需要下载安装即可使用的应用小程序,和原有的三种公众号是并行的体系.2017年1月9日,微信小程序正式上线. 本篇博文就网上资料及相关教程整理一下,希望对想要进行小程序开发的小白提供一下帮助. 第一步:想要进行微信小程序开发,必须有自己的微信开发者账号,在这里博主提供一下微信公众平台的链接:https://mp.weixin.qq.com (万恶的腾讯家,竟然还要一个新的邮箱来

一个小时快速搭建微信小程序

「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的是微信这两天发布了正式版开发者工具,无需内测邀请也可以尝鲜了. 因此也就有了我与「小程序」的初体验,而我的感受只有一个字--爽! 选择哪个「小程序」Demo? 在知名同性交友网站 Github 上,「小程序」的 Demo 不少,但是大多只是简单的 API 演示,有的甚至直接把页面数据写在了 json

如何一键式搭建微信小程序

有了微信小程序,对你到底意味着什么? 对于用户来说,再也不用担心手机的内存不够用了!一个小程序只有1M,随便卸载一个App,就能安装很多小程序! 对于老板来说,你不再需要花费数十万来去请外包公司帮你去开发一个App来,而且还不能做多机型的适配! 对于开发者来说,你有了一个新的做私活的机会!微信小程序的模式让你轻轻松松一个人完成所有任务! 接入微信小程序,我们究竟有哪些问题? 微信小程序,是一个新生事物,和我们的传统的Web业务并不相同,而其基于JS的语法,也让很多前端开发工程师涌入其中.那么微信