准备工作
1、vue环境安装:https://editor.csdn.net/md/?articleId=108667564
2、申请一个公众号(订阅号)测试使用
3、申请开发者测试号
4、下载微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html
5、搭建一个简单的后台(随便什么都行,通过请求访问)
开始
1、搭建vue3手脚架,推荐使用vue ui或npm install -g @vue/cli
2、必要的组件:router/store/axios
3、任选一款框架,我选的是element-plus,还推荐一个vant(移动端开发比Element友好)
4、看看必须要用的几个东西
constant.js
export const serverUrl = '' // 前端页面的地址(如果是映射的就写外网地址)
export const wwwUrl = ''// 公众号的外网地址
export const appid = '' // 公众号的appid
export const appsecret = '' // 公众号的appsecret
通过https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index拿到测试用的appid和appsecret
main.js
import {
createApp } from 'vue';
import App from './App.vue';
import router from '@/router';
import store from '@/store';
// axios
import {
post,get,patch,put,del} from './http/request';
// ! element-plus vue3.0
import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';
const app = createApp(App);
// axios定义全局变量
app.config.globalProperties.$post = post;
app.config.globalProperties.$get = get;
app.config.globalProperties.$patch = patch;
app.config.globalProperties.$put = put;
app.config.globalProperties.$del = del;
app.use(ElementPlus).use(router).use(store).mount('#app')
axios之所以这样的是因为我这边做了一个简单的封装,封装代码如下:
import axios from "axios"
import {
serverUrl
} from "@/untils/constant"; // 这里我是将所有常量放在一个地方的,需要的时候做引入,也可以直接写地址
import qs from "qs";
axios.defaults.timeout = 5000;
axios.defaults.baseURL = serverUrl;
//http request 拦截器
axios.interceptors.request.use(
config => {
let newConfig = config;
if (newConfig.url) {
// 不同的请求可以做不同的处理
newConfig.data = qs.stringify(config.data);
newConfig.headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
return newConfig;
},
error => {
return Promise.reject(err);
}
);
//http response 拦截器
axios.interceptors.response.use(
response => {
if (response.data.errCode == 2) {
router.push({
path: "/login",
query: {
redirect: router.currentRoute.fullPath
} //从哪个页面跳转
})
}
return response;
},
error => {
return Promise.reject(error)
}
)
/**
* 封装get方法
* @param url
* @param data
* @returns {
Promise}
*/
export function get(url, params = {
}) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
<