如下是本身在开发过程当中遇到的坑和小技巧,记录如下:javascript
1.出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app.json.2. Invoking Page() in async task.css
截图以下:html
解决办法:须要在每一个XXX.js文件中加入page(),以用来生成一个页面实例对象.vue
Page({
});
有时就算你在每一个js文件中都写了基本的page()代码,仍是会保这个错误,这时须要注意app.json里面的路由填写顺序,如通常二级界面就写在一级界面的下面,千万别写在末尾.如:java
正确写法:git
错误写法:github
同时,也得注意默认自带index和logs这两个,一般通常都是放在末尾,有时我放在中间部分,下方的部分页面也会出现.有时出现这个错误彻底只是开发工具的问题,重启下就行了(公测初版的开发工具bug太多).json
2.网络请求:对于网络请求也是一个大坑.一如既往,小程序只能使用https,除非使用破解以后的开发工具,而且不能在真机运行.https://github.com/gavinkwoe/weapp-ide-crack小程序
对于网络请求,最常使用的是POST请求,可是这就是微信小程序的大坑所在.官方的文档及其简陋,连入门都不够的.对于post请求,咱们须要把data改成formData传过去才行.微信小程序
首先在Utils文件夹中的Util.js文件文写出如下代码,用来把参数转为formData
//参数data转formData function json2Form(json) { var str = []; for(var p in json){ str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p])); } return str.join("&"); } module.exports.json2Form = json2Form
而后在post请求的文件中,引入该Util.js文件
var Util = require( '../../../utils/util');
接下来就是修改request方法:
//调用应用实例的方法获取全局数据 wx.request({ url: 'http://www.pintasty.cn/productdetail/findproductdetailbyid', method: 'POST', header: { "content-type": "application/x-www-form-urlencoded" //这里的改,一开始Content-Type能够,如今只能使用content-type }, data: Util.json2Form( { product_id:"P-2c22ad5be9b24a5da0cd5d8594e8ec32",uploadImgId : "UU-60a0e559b0a0421d892232fc75ee9d17" }), //这里得改,参数只能这样传入 success: function (res) { console.log('酒品详情' + JSON.stringify(res)) that.setData({ wineData:res.data.data, bigPicture:res.data.data.bigPicture }) }, fail: function (res) { console.log('失败' + JSON.stringify(res)) }, })
而后就好了,由于个人是破解版开发工具,因此能够http.
3.在XXX.js文件中获取屏幕的宽高.
主要根据小程序提供的getSystemInfo()方法,该方法能够获取到设备的经常使用信息,如手机型号.设备像素比.屏幕宽高等等.最经常使用的就是屏幕宽高了
//获取屏幕宽度 var screenWidth = wx.getSystemInfo({ success: function (res) { screenWidth = res.windowWidth } }) //获取屏幕高度 var screenHeight = wx.getSystemInfo({ success: function (res) { screenHeight = res.windowHeight } }) Page({ onLoad:function(){ console.log('屏幕高度:'+screenHeight) console.log('屏幕宽度:'+screenWidth) } })
http://www.jb51.net/article/93994.htm
3.使用rpx在实现基本的屏幕自适应.
rpx单位是微信小程序中css的尺寸单位,rpx能够根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
设备 | rpx换算px (屏幕宽度/750) | px换算rpx (750/屏幕宽度) |
---|---|---|
iPhone5 | 1rpx = 0.42px | 1px = 2.34rpx |
iPhone6 | 1rpx = 0.5px | 1px = 2rpx |
iPhone6s | 1rpx = 0.552px | 1px = 1.81rpx |
微信小程序也支持rem尺寸单位,rem和rpx的换算关系:rem: 规定屏幕宽度为20rem;1rem = (750/20)rpx
注:开发微信小程序时设计师能够用 iPhone6 做为视觉稿的标准。
建议:设计稿使用设备宽度750px比较容易计算750px的话1rpx=1px,这样的话,设计图上量出来的尺寸是多少px就是多少rpx,至于在不一样的设备上实际上要换算成多少个rem就交给小程序本身换算
4.sublime福音:微信小程序组件及API补全插件
5.微信推出了一套官方样式库,方便你们开发,对于一些相似的UI界面咱们须要引入便可,无需重复造轮子.
附上github地址: https://github.com/weui/weui-wxss
咱们只需导入weui.wxss等便可减小大量的css布局工做.
6.请求openid不容许在移动直接请求,须要移动先请求后台,后台再请求微信,微信返回后台,后台返回移动端的流程,和支付相似.
以前,咱们直接在移动端请求微信的接口,可是会出现管理后台更新域名配置这个错误.发帖请求官方得如下回复:
再询问网友,得知移动端直接请求这个微信6月份已被禁止了.白忙活一天.
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxchecksessionobject
7.使用mpvue,屎同样的bug:Newline required at end of fine but not found.
如图:
报错位置:
只须要在app.$mount()下方再来一行空白行便可.
后续的工做遇到再添加.