關於mpvue 請求ajax 引用fly.js

最近由於項目需要,需要做一套同時支持微信小程序和h5頁面 的程序,然後發現了mpvue。附上mpvue的官網:

http://mpvue.com/

以下爲官網的解釋:

使用 mpvue 開發小程序,你將在小程序技術體系的基礎上獲取到這樣一些能力:

  • 徹底的組件化開發能力:提高代碼複用性
  • 完整的 Vue.js 開發體驗
  • 方便的 Vuex 數據管理方案:方便構建複雜應用
  • 快捷的 webpack 構建機制:自定義構建策略、開發階段 hotReload
  • 支持使用 npm 外部依賴
  • 使用 Vue.js 命令行工具 vue-cli 快速初始化項目
  • H5 代碼轉換編譯成小程序目標代碼的能力

步入正題。

剛開始開發的時候由於不熟悉mpvue開發,所以直接按照官網教程下載了2.X的版本進行開發,然後發現對於H5頁面的兼容好像不太好,所以在網上找了其他的方法,發現了mpvue的1.X版本更適用於我的需求(主要是本人比較笨,不會配置。。。)。附上gitHub下載地址

https://github.com/Aimee1608/mpvuedemo.git

好了。正式開始發起請求。。。

剛開始的思路是判斷是否爲小程序環境,然後用wx.request請求,h5頁面用axios請求,後來找到了fly.js,就可以不用再寫倆套代碼了。

https://www.npmjs.com/package/flyio

但是,在開發的過程中發現如果直接請求,請求接口以後無法得到返回值,全局變量直接賦值會報錯。所以需要響應攔截器,可以通過他在請求發起之前後收到響應數據之後做一些預處理,這樣就可以操作你的數據。

在根目錄src/utils/request.js

var Fly;
if (window) {
//h5頁面引入fly請求ajax
	Fly = require("flyio/dist/npm/fly")
} else {
wx引入fly請求
	Fly = require("flyio/dist/npm/wx")
}


const request = new Fly();

request.interceptors.request.use(request => {
	// wx.showNavigationBarLoading();
	return request;
});

request.interceptors.response.use(
	(response, promise) => {
		// wx.hideNavigationBarLoading();
		return promise.resolve(response.data);
	},
	(err, promise) => {
		// wx.hideNavigationBarLoading();
		// wx.showToast({
		// 	title: err.message,
		// 	icon: "none"
		// });
		return promise.resolve();
	}
);

export default request;

在所需頁面引入

import request from "../../utils/request.js";

發送請求

var fly = require("flyio");
      request
        .post(
          // post/get 請求方式
         url,
          params
        )
        .then(res => {
          console.log(res);
          
        });

請求成功~~

PS:如果沒有配置接口,在小程序裏發起請求的時候,會報錯,提示


有兩種解決方法:

1、在小程序====》設置=====》域名信息種配置接口服務器,如下圖

2、還是在設置===》項目設置裏,將不校驗合法域名這一項打勾。就ok了。

有什麼不對的,還希望多多指教,也是在不斷學習中~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章