赞
踩
编辑器:HubilderX
运行环境:微信开发者工具
技术栈:uni-app + vue + uView + uCharts + LeanCloud
创建微信小程序项目时,我才用了vue前端框架
PS:用的是HbuilderX编辑器
注册完后,获取微信小程序的AppID,并在manifest.json文件配置;
使用uni-app内置的插件市场下载插件到uni.modules中,按照其要求安装
根目录 static 存放静态资源
还可以设置全局样式、配置底部tab栏和设置启动小程序时的启动页面
在根目录 pages.json 配置路由
{ // 路由菜单 "pages" : [ { "path" : "pages/list/detail", "style" : { "navigationBarTitleText" : "清单详情",// 标题 "enablePullDownRefresh" : false // 是否下拉刷新 } }, ], "globalStyle" : { //... }, // 底部tab栏配置 "tabBar" : { "color" : "#797e83", "selectedColor" : "#ff5566", "list" : [ { "text" : "首页", "pagePath" : "pages/index/index", "iconPath" : "static/icon/index.png", "selectedIconPath" : "static/icon/index1.png" }, ] }, "condition" : { //模式配置,仅开发期间生效 "current" : 0, //当前激活的模式(list 的索引项) "list" : [ { "name" : "", //模式名称 "path" : "pages/index/index", //启动页面,设置为首页 "query" : "" //启动参数,在页面的onLoad函数里面得到 } ] } }
由于我比较喜欢vue的开发,比微信小程序的原生语法更高效,我觉得能不能使用vue去开发,所以找到了uni-app,但开发中发现uni-app对vue的高级语法不兼容,这是后话了。
store/index.js
import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); const store = new Vuex.Store({ state: { isLogin: false,//用于个人清单页的数据获取 }, mutations: { set_isLogin(state,isLogin) { state.isLogin = isLogin; uni.setStorageSync('isLogin', isLogin); }, } })
思路:request.js封装uni.request,api.js二次封装request.js导出的get\post\put\delete方法
我这里请求的是LeanCloud云数据库存储,没有服务器和后端,所以需要符合LeanCloud的请求头规范
utils\request.js
:
由于不能用axios,所以封装uni-app提供的uni.request,并导出get\post\put\delete方法
let baseUrl = 'https://XXX.com'; // 数据请求 const $http = function(url,method,data={}) { return new Promise((resolve,reject)=>{ uni.request({ url: baseUrl+url, method, data, header: {// 请求头符合LeanCloud规范,如果后端的接口有token请求可以自定义 "X-LC-Id": "6zl0SNVm3IOBBPtEUSXea5su-gzGzoHsz", "X-LC-Key": "6QrXp3mYKnT2z7Xb5c3PtGbt", "Content-Type": "application/json" }, success: (res) => { resolve(res); }, fail: (err) => { reject('请求失败',err); } }) }); } export const $get = function(url,data={}) { return $http(url,'GET',data); } export const $post = function(url,data={}) { return $http(url,'POST',data); } export const $put = function(url,data={}) { return $http(url,'PUT',data); } export const $delete = function(url,data={}) { return $http(url,'DELETE',data); }
utils\api.js
:
import { $get,$post,$put,$delete } from "./request.js";
// 获取当前用户的全部个人任务列表
export const $getList = (shortId) =>{
let url = `/1.1/classes/lists?where={"shortId":"${shortId}"}`;
return $get(url);
}
微信小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/index.html
以下是微信方制定的开发流程
获取用户微信名和头像
wx.getUserProfile({
desc: '获取您的头像和昵称',
});
一般在onShow中获取数据
uni.switchTab({
url:'../my/my'
})
uni.navigateTo({
url:'./group?objectId='+objectId
})
// 页面A getListId(objectId) { uni.navigateTo({ url:'../list/detail?objectId=' + objectId, events:{ con: (data)=> { // 找出下标,并修改 // console.log('aaa',this.allList); let index = this.allList.findIndex(item=>{ return item.objectId === data.objectId; }); this.allList.splice(index,1,data); this.id = ['收集箱','备忘录','执行清单','等待清单'].indexOf(data.type); this.type = data.type; console.log('下标',this.id); } } }, // 页面B // 点击修改并跳转,并传参 val_type(obj) { // 返回数据给页面A const eventChannel = this.getOpenerEventChannel(); const obj = {...} eventChannel.emit('con', obj); // 跳转至页面A uni.switchTab({ url:'./list' }); // 或者直接返回到页面A uni.navigateBack(); },
<!-- 图表展示 --> <view class="charts-box"> <qiun-data-charts type="pie" :opts="opts" :chartData="chartData" :canvas2d="true" canvasId="dYWDFpyAVgAHeyRicapcCxuOtkcwjBZQ" /> </view> data() { return { chartData: {},// 图表 opts: { // color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], color: ["#EE6666","#3CA272"], padding: [5,5,5,5], extra: { pie: { activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, labelWidth: 15, border: true, borderWidth: 3, borderColor: "#FFFFFF", linearType: "custom" } } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。