uniapp 之 常用的 main.js文件配置 上

前言

在我们日常工作开发中,每次新建一个uniapp项目,所使用的main.js文件中的内容大差不差,

我这边的话,先分享下我自己所使用的 内容,也是为了方便下次使用时可以直接C过去

若有大神使用的内容比我好的话,欢迎留言

总代码

// #ifndef VUE3
import Vue from 'vue'
import App from './App'
import store from './store/store.js'
import share from './mixins/share.js'
Vue.mixin(share)
// 配置请求包
// 1.引入
import {
  $http
} from '@escook/request-miniprogram'
// 2.设置请求根路径
$http.baseUrl = 'https://loud.com'
// 3.设置拦截器-设置加载弹窗
$http.beforeRequest = function(options) {
  //打开弹窗提示用户正在加载
  uni.showLoading({
    title: "加载中..."
  })
  // 判断请求的是否为有权限的 API 接口
  if (options.url.indexOf('/uniapp') !== -1) {
    //设置Authorization请求头
    options.header.Authorization = `Bearer ${store.state.m_user.token}`
  }

  // 为请求头添加身份认证字段
  // options.header = {
  //   // 字段的值可以直接从 vuex 中进行获取
  //   Authorization: store.state.m_user.token,
  // }
}
$http.afterRequest = function({
  data: {
    resCode
  }
}) {
  // 关闭弹窗
  uni.hideLoading()
  if ("00100002" === resCode) {
    let n = 2
    uni.$showMsg(`当前状态异常,请先登录,页面将于${n}秒后跳转到登录页面`)
    let timer = setInterval(() => {
      n--
      if (n === 0) {
        clearInterval(timer)
        uni.navigateTo({
          url: '/pages/my/my'
        })
      }
      uni.$showMsg(`当前状态异常,请先登录,页面将于${n}秒后跳转到登录页面`)
    }, 3000)
    return
  }
  // console.log('响应拦截器', resCode, msg);
}
//4.将$http挂载到全局
uni.$http = $http
//uni.$http.get()  这个方法使用

// 封装弹窗
uni.$showMsg = function(title = '获取失败...') {
  uni.showToast({
    icon: "none",
    title
  })
}
Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
  ...App,
  store
})
app.$mount()
// #endif

分析

1.引入

@escook/request-miniprogram

因平台的限制,小程序项目中不支持 axios,而且原生的 wx.request() API 功能较为简单,不支持拦截器等全局定制的功能。因此,建议在 uni-app 项目中使用 @escook/request-miniprogram 第三方包发起网络数据请求。 

官网

下载安装   

npm install @escook/request-miniprogram

最终配置

import { $http } from '@escook/request-miniprogram'

uni.$http = $http
// 配置请求根路径
$http.baseUrl = 'https://v.com'

// 请求开始之前做一些事情
$http.beforeRequest = function (options) {
  uni.showLoading({
    title: '数据加载中...',
  })
}

// 请求完成之后做一些事情
$http.afterRequest = function () {
  uni.hideLoading()
}

配置完成后就是将 

将$http挂载到全局
uni.$http = $http

请求时

uni.$http.get/ post(‘请求地址’ ,参数)  

后续 补充

需求 

 在后续 需要在倒计时中发送请求,然而 我已经在 main。js文件中 封装每次请求前都会出现加载框

重要代码

 let urlStatus = options.url.substring(options.url.lastIndexOf('/') + 1)
  console.log(urlStatus);
  if (urlStatus !== 'stopCharging' && urlStatus !== 'selectPileStarterStatus') {
    uni.showLoading({
      title: "加载中..."
    })
  }

 

$http.beforeRequest = function(options) {
  // console.log('请求拦截器', options);
  //打开弹窗提示用户正在加载 
  let urlStatus = options.url.substring(options.url.lastIndexOf('/') + 1)
  console.log(urlStatus);
  if (urlStatus !== 'stopCharging' && urlStatus !== 'selectPileStarterStatus') {
    uni.showLoading({
      title: "加载中..."
    })
  }
  // 判断请求的是否为有权限的 API 接口
  if (options.url.indexOf('/uniapp') !== -1) {
    //设置Authorization请求头
    options.header.Authorization = `Bearer ${store.state.m_user.token}`
  }
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
报错信息提示文件查找失败,指定的文件路径为 `C:\Users\86136\Documents\HBuilderProjects\Uniapp learning\main.js`。这可能意味着在给定路径下找不到 `main.js` 文件。 以下是一些可能导致此错误的原因和解决方法: 1. 检查路径是否正确:确保指定的路径正确,并且文件名和文件后缀名是准确匹配的。请注意,路径区分大小写,所以确保路径中的大小写与实际文件名一致。 2. 检查文件是否存在:确认在指定的路径下,确实存在名为 `main.js` 的文件。您可以通过文件浏览器或终端命令来验证文件是否存在。 3. 检查文件权限:如果您没有足够的权限访问该文件,可能会导致文件查找失败。请确保您具有足够的权限来访问指定路径下的文件。 4. 检查文件是否已移动或删除:如果该文件被移动或删除,则无法在指定路径下找到它。请确保文件没有被意外地移动或删除。 5. 检查文件名和后缀名:如果您的 `main.js` 文件名或后缀名不正确,也会导致文件查找失败。确保文件名拼写正确,并且文件后缀名为 `.js`。 6. 检查操作系统兼容性:如果您的项目是在不同操作系统下创建的(例如Windows和Mac),可能会导致路径格式不兼容。请确保在不同操作系统之间使用适当的路径格式。 请根据以上提示逐一检查,找出导致文件查找失败的具体原因,并进行相应的解决方法。如果问题仍然存在,请提供更多的上下文信息和报错堆栈,以便我能够提供更具体的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值