mpvue-entry
和 mpvue-router-patch
实现形成一次配置入口;像普通vue项目一样进行路由转发app.json
,对应的可查阅微信小程序文档配置项进行配置新增app.json
有一个字段为pages
,用于新增操作页面后在此处声明配置,想首屏显示哪一个,就把地址配置放在数组的第一位// 一个示例
{
"pages": [
"pages/index/main",
"pages/show/main"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
}
}
project.config.json
文件,进行微信小程序的一些配置项,包括需要去微信公众平台申请的小程序开发的appid
usingComponents
引入需要的控件{
"usingComponents": {
"van-field": "/static/vant/field/index",
"van-button": "/static/vant/button/index"
}
}
主要按钮
@change="onChange($event,'password')"
并且把当前的event
和字段名传入方法,在data中声明绑定的字段,onChange(event, type) { // 获取表单组件filed的值
this[type] = event.mp.detail;// 更新绑定到data
},
npm install mpvue-entry --save-dev
npm install mpvue-router-patch --save
mpvue-router-patch
import MpvueRouterPatch from 'mpvue-router-patch'
Vue.use(MpvueRouterPatch)
// 首先注释默认的appEntry配置,例如我之前的
// const appEntry = { app: resolve('./src/main.js') }
// const pagesEntry = getEntry(resolve('./src'), 'pages/**/main.js')
// const entry = Object.assign({}, appEntry, pagesEntry)
module.exports = {
entry:MpvueEntry.getEntry('./src/router/router.js'),
.......
plugins: [
new MpvuePlugin(),
....]
}
module.exports = [{
// path 指向pages 文件夹下的showData文件夹下的area.vue 文件
path: 'pages/showData/area',
name: 'area',
config: {
// 支持微信端的配置参数
navigationBarTitleText: '数据查看',
//引入UI组件
usingComponents: {
"van-tab": "/static/vant/tab/index",
"van-tabs": "/static/vant/tabs/index",
}
}
},{
path: 'pages/dataInput/dataInput',
name: 'dataInput',
config: {
navigationBarTitleText: '信息录入',
//引入UI组件
usingComponents: {
"van-button": "/static/vant/button/index",
"van-field": "/static/vant/field/index",
}
}
}]
Wafer2 是腾讯云集成的开发解决方案,提供各种版本的quickstart,我下载的是NodeJS的demo;获取后因为小程序端页面已经使用mpvue开发了,于是这个demo我只需要拷贝server文件夹到自己的mpvue生成的项目中
默认使用的是腾讯云的云端开发环境,如何切换成自己本地的开发环境呢:文档在这:https://cloud.tencent.com/developer/ask/25171 各项配置修改成本地的即可
如果需要获取当前登录用户的openID,需要安装 npm install wafer2-client-sdk --save
各项服务准备好了,开始发一个请求试试,结果报错,
http://localhost:5757 不在以下 request 合法域名列表中,
请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
open-type="getUserInfo"
,对应的绑定事件,也需要修改成@getuserinfo="bindgetuserinfo"
来回调函数
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; (修改加密规则 (必写))
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; (更新用户密码 )
FLUSH PRIVILEGES; #刷新权限(不输入也可以)
let data = ctx.request.body;
;get请求的参数在let data = ctx.request.query;
中const { mysql } = require("../qcloud");
const findUser = await mysql("user").select().where("name", name);
mysql("user").insert({ openid,name })
const findUser = await mysql("user").select('user.*',"cSessionInfo.user_info").join("cSessionInfo","user.openid", "cSessionInfo.open_id");
node-xlsx
包const xlsx = require('node-xlsx')
const fs = require('fs')
.....
const data = [
[1, 2, 3],
[true, false, null, 'sheetjs'],
['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
['baz', null, 'qux']
];
var _buffer = xlsx.build([{ name: "mySheetName", data: data }]); // Returns a buffer
fs.writeFileSync('./download/' + '文件名' + '.xlsx', _buffer);
koa-send
包router.get('/addName', async (ctx, next) => {
const path = "../download/sad.xlsx";
ctx.attachment(path);
ctx.set('Content-Type', 'application/octet-stream');
await send(ctx, path);
})
wx.downloadFile({
url: 'http://localhost:5757/weapp/addName',
success(res) {
console.log(res)
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
if (res.statusCode === 200) {
wx.openDocument({
fileType: 'xlsx',
filePath: res.tempFilePath,
success: function(res) {
console.log('打开文档成功')
},
fail:function(res){
console.log(res)
},
});
}
}
})
目前差不多就quickstart这样;后续有坑再发上更新