微信小程序开发常见问题?1:项目结构微信小程序的项目结构中主要有四种文件类型。下面的WXML(WeiXinMarkupLanguage)是框架设计的一套标签语言。结合基础组件和事件系统,构建页面的结构。内部主要是微信自己定义的一套组件。WXSS(WeiXinStyleSheets)是一种样式语言,用于描述WXML组件样式、js逻辑处理、网络请求json小程序设置,如页面注册、页面标题、tabBar等。注意:为了方便开发者减少配置项,规定描述页面的四个文件必须具有相同的路径和文件名。根目录下以app命名的四类文件为程序入口文件。app.json必须有这个文件。没有这个文件,项目是跑不起来的,因为微信框架就是以这个作为配置文件入口,整个小程序的全局配置。包括页面注册、网络设置、小程序窗口背景色、配置导航栏样式、配置默认标题。app.js必须要有这个文件,没有的话会报错!但只需创建此文件。你不需要写任何东西。后面我们可以对小程序的生命周期函数进行监控和处理,在这个文件中声明全局变量。app.wxss是全局配置的样式文件,项目不需要。了解了小程序的基本文件结构后,就可以开始研究官方demo了。如果在研究过程中有不明白的地方,可以去官方文档中寻找答案。如果找不到答案或有疑问,可以在本博客留言,互相交流。以下是可能出现的一些最常见的问题。二:常见问题rpx(responsivepixel)微信小程序新定义了一个尺寸单位,可以适配不同分辨率的屏幕。规定屏幕宽度为750rpx。例如,在iPhone6上,屏幕宽度为375px,总共有750个物理像素,则750rpx=375px=750个物理像素,1rpx=0.5px=1个物理像素。我在这个项目中使用了rpx大小单位,期间遇到了一个很奇怪的问题。相邻的两条信息之间会直接有一条分界线。我把线的高度设置为1rpx,但是没有显示不出来的个别分割线。看第一、二线不直接相连是不现实的。line,但是显示其他的,分界线的属性是一样的,不同手机(不同分辨率)不显示的分界线也不同,有的分辨率不显示几条分界线。不知道这是模拟器的bug还是rpx的bug。最后,分割线的高度尺寸单位使用px,解决了这个问题。错误40013微信小程序刚出来的时候,如果输入AppID提示这个信息,说明还没有破解,但是现在官方软件更新可以选择不带AppID开发,如下图,选择我们之间没有AppID,你可以解决这个错误。建议安装官方开发工具。您可以在此处找到下载链接。4058错误微信小程序创建项目时没有选择AppID,创建项目时会生成app.json。app.josn是程序启动最重要的文件。程序的页面注册、窗口设置、选项卡设置和网络请求时间设置都在这个文件下。如果你创建的项目目录下没有app.json文件,会报如下错误。我们看到上面的报错信息中有一个数字-4058。这应该是进入微信小程序最常遇到的错误了。这种错误一般是因为文件丢失,背后是有路径的。您可以查看路径以查看是否存在此文件。出现这个错误的原因一般是创建项目选择的目录不正确,或者app.json中注册了一个不存在的页面。当然还有一种情况是app.json文件的pages中注册的页面没有创建,或者你删除了一个页面,但是如果你不取消注册,也会导致-4058错误。页面注册错误这个错误可能很容易理解,页面注册错误。页面通过Page对象呈现。每个页面对应的js文件都要创建一个页面。最简单的方法就是在js文件下写Page({})。在页面中,有一个管理页面渲染的生命周期,数据处理和事件都在这里完成。出现这个错误的原因一般是页面刚刚创建,js文件已经处理完或者忘记处理了。所以需要养成在创建页面的同时在js文件中先创建Page的习惯。Pagerouteerror字面意思就是页面路由错误。微信中有两种路由方式。一种是在wxml文件中使用如下代码:wxml文件:js文件事件处理函数:bindtap:function(event){wx.navigateTo({url:"search/search"})}如果你这样写,恭喜,你会看到上面提示的错误,这是因为重复调用路由导致的,解决方法是删除一条路由,删除search这个也是不允许的,也就是说,不要在当前页面有*handler。大概意思是当前页面没有这个处理,这样可以判断是否定义过,也可以指出错误页面/消息/消息的可能位置,其实这种问题一般都会出现因为我们在wxml中定义了一些处理事件,但是js文件中并没有实现事件处理方法,就会出现这个错误。然后我们按照提示在js文件中添加事件处理,比如下面的代码,添加之后就不会再有报错信息了。bind:function(event){wx.navigateTo({url:"pages/logs/logs"})},tabBar设置不显示。tabBar不显示的原因有很多。要查找此错误,请直接转到app.json文件。刚学微信小程序最常见最容易犯的错误无非是下面的注册页面,即将页面写入app.json的pages字段,如"pages":["pages/index/index","pages/logs/logs","pages/account/account","pages/more/more"],tabBar写错不显示,大写字母B写成小写,导致tabBar不显示。tabBar的列表中没有写pagePath字段,或者pagePath中的页面没有注册。tabBar的列表的pagePath指定的页面没有写入第一个注册页面。微信小程序的逻辑是“pages”中的第一个页面为首页,即程序启动后显示的第一个页面。如果tabBar列表的pagePath指定的页面不是页面的第一页,当然是WillnotTVtabBar。tabBar的数量少于两个或多于五个。微信官方规定tabBar最少2个,最多5个。大于或小于都不会显示tabBar。navigationBarTitle显示问题通过这个动态图,应该能找到问题所在。点击音乐进入音乐界面,标题先显示WeChatForQQ,再显示音乐。这种体验肯定是不能接受的,因为音乐界面的标题是在js文件中的。在页面的生命周期方法中设置。不知道生命周期的可以点击查看Page({data:{//text:"Thisisapage"},onLoad:function(options){//页面初始化选项是page自带的参数jump},onReady:function(){//页面渲染完成//NavigationBarTitle如果这里和json文件都设置了,最后在这里显示标题栏wx.setNavigationBarTitle({title:'Account'})},onShow:function(){//页面显示},onHide:function(){//页面隐藏},onUnload:function(){//页面关闭}})通过注释你应该明白了,设置标题写在onReadymethod,即页面已经渲染完成,在onReady之前显示的title就是json文件中的title(覆盖关系,如果在子页面json文件中设置了title,会覆盖app.json全局设置)。你可能会说wx.setNavigationBarTitle是写在onLoad函数里面的,但是如果这个设置不对,因为执行onLoad之后才渲染页面,页面渲染的时候会从json文件中读取title,导致titleset通过onLoad是只在页面渲染之前显示,然后显示json文件的tile,所以现在你应该明白了,设置tottle最好的地方就是为子文件写一个json文件和把它写在文件里。如果要改变颜色,直接在文件中添加即可,这个文件中写入的属性值会覆盖app.json中设置的值。{"navigationBarTitleText":"Account"}wx.navigateTo无法打开页面。一个应用只能同时打开5个页面。打开5个页面后,wx.navigateTo无法正常打开新页面。请避免多级交互,或者使用wx.redirectTo本地资源无法通过css获取background-image:可以使用网络图片,或者base64,或者使用标签在页面间传递数据微信小程序路由(页面跳转)是通过API<导航器url="/pages/dynamic/dynamic?title={{item.title}}&message={{item.message}}">{{item.title}}{{item.message}}{{item.time}}0}}">{{item.count}}这个数据接收是在js文件的页面中接收的。页面生命周期有个onLoad函数,就是做一些初始化数据的工作,onLoad函数有个参数options,我们可以通过key获取数据,如下Page({data:{//text:"Thisisapage"isHiddenToast:true}onLoad:function(options){//page初始化options页面跳转带来的参数console.log(options.title)console.log(options.message)},onReady:function(){//页面渲染完成},onShow:function(){//页面display},onHide:function(){//隐藏页面},onUnload:function(){//关闭页面},bind:function(event){wx.navigateTo({url:"pages/logs/logs"})},})本文来源:成都多想科技小程序