欢迎光临,了解微信小程序开发,就上易用通!

推荐收藏: 小程序开发者开发过程中会遇到的问题汇总

发布:2018-03-31 09:25浏览: 来源:网络 作者:cola

本文来自蜂鸟社区,已获授权,授权地址
以下是微信小程序开发过程中常见问题,如果您有新的补充可在楼下回复哦,如果本帖内容有误,请回复,十分感谢!


1、问:请问一下,首次打开的时候会出现一个选择界面,进行选择之后进入主页,下次再打开就不再显示这个选择界面,直接显示主页,这个应该怎么实现呢?如果在一个空界面直接进行跳转,初次打开的时候空白界面会先显示一下,才会跳转对应的界面,这应该怎么处理呢?

答:目前首页的设置,默认是在app.json的pages的第一个页面。
        每次重启打开都会显示这么页面。

        如果想要一个选择页面并且没有停顿体验的话,可以在首页上添加额外的view层来解决,一次显示,之后display设置none,显示与否可以在本地存储一个标识。

2、问:使用ffmpeg 将silk转mp3失败,哪位大神成功过的,辛苦给下思路,不胜感激!

答:用的gitHub上面的decoder开源库,先解码silk,再转MP3        https://github.com/kn007/silk-v3-decoder


3、问:微信小程序   navigateTo 只能使用五次  五次之后无效  怎么处理的?

答:不是只能跳转5次,而是跳转层次只能是5层,注意理解。       页面一层一层往里跳进,最多5层。是这个意思。



4、问:微信小程序中能否用js更改app.js中的globalData?怎么实现?不能更改的话怎么实现在当前页面中设置一个属性,在另一个页面中也能显示出来?

答:可以修改啊,globalData只是设置在app.js 的一个object数据,你可以直接改的。        比如:
        在globalData里有一个users = ['张三', '李四'];
        在任意一个js里可以修改:getApp().globalData.users = ['王五', '赵六'];


5、问:php自己的session是用来判断用户是否登录的,windows+apache的话,小程序的session咋存储。是存储到数据库中???还是哪???wx.login中的code哪个是用户的唯一标识?是openid吗??

答:小程序在本地存储一个秘钥,每次请求的时候带过去,服务端校验这个秘钥,如果合法,返回成功和对应的数据。


6、问:Swiper插件使用问题

答:感觉没办法,组件的体验需要微信的优化,组件都是封装好的改不了

7、问:小程序里的console在wing工具哪里看

答:点击调试即可。

8、问:之前已认证的公众号不能用作开发小程序吗?


答:小程序是和订阅号、服务号以及企业号平行的新类型,所以需要在微信公众平台申请一个新的小程序号,需要重新认证。

9、问:特别好奇 微信小程序能不能支持发送图标到桌面这个功能

答:安卓应该可以,苹果不行

10、问: 微信小程序没有提供webview组件吗?

答:首先微信内跳转普通H5页面时,跳转地址是需要在国内备案的,否则会有警告提示。        以微信的尿性,我个人估计小程序是不会提供webview组件让你自由加载第三方页面的,安全考虑。

11、问:<view wx:if"{{list}}"> list是数组,怎么判断条数为0
 
答:你说的是条件渲染吗?       也可以<view wx:if="{{list.length == 0}}"> </view>
       可以在 {{}} 内进行简单的运算,包括三元运算符、逻辑判断、算数运算

12、问:想开发一个社交小程序 程序里面产生动态能提示用户么?

答:微信的概念是不打扰用户,肯定不能随便给用户弹消息,但是有模板消息 是专门做消息通知的。

13、问:想做个本地垂直类的服务型项目。小程序试用吗

答:非常适合,试水成本也不高

14、问:怎么让<swiper>充满整个屏幕啊

答:宽高都设置为100%,试试看

15、问:微信小程序如何被用户打开,并且是自动获取用户的ID和头像的么?就是说我做了一个叫大姨吗的微信小程序,可是我怎么让别人发现这个小程序,并且登录注册进去呢?


答:目前只是开放公测阶段,并没有正式上线。关于小程序的入口,除了分享二维码外,还有想象空间~获取用户信息,需要代码调用api。先调用wx.login  然后wx.getUserInfo  就可以获得用户的名称和头像了。这过程对用户来说是透明的。

示例代码:
wx.getUserInfo({
  success: function(res) {
    var userInfo = res.userInfo
    var nickName = userInfo.nickName
    var avatarUrl = userInfo.avatarUrl
    var gender = userInfo.gender //性别 0:未知、1:男、2:女 
    var province = userInfo.province
    var city = userInfo.city
    var country = userInfo.country
  }
})


16、问:微信小程序多个组件动画,官方教程上都是单个组件的动画比如
var animation = wx.createAnimation({
        duration: 1000,
        timingFunction: "ease",
        delay: 2000
      })
      this.animation = animation
    
      animation.scale(1).step();

      this.setData({
        AvatarShow:animation.export()
      })

<image class="avatar" animation="{{AvatarShow}}" src="{{userInfo.avatarUrl}}"></image>

17、这样的,但是我想让这个动画执行完毕了以后,控制
<text class="userinfo-nickname">欢迎您:{{userInfo.nickName}}</text>

其他的组件做动画效果应该怎么做呢?

答:rotateThenScale: function() {
        this.animation.rotate(Math.random() * 720 - 360).step()
            .scale(Math.random() * 2).step()
        this.setData({ animation: this.animation.export() })

        setTimeout(function() {
            this.animation2.rotate(Math.random() * 720 - 360).step()
                .scale(Math.random() * 2).step()
            this.setData({ animation2: this.animation2.export() })
        }.bind(this), 3000)

    },

比如这个是我修改的官网示例,animation不同就可以控制不同的组建了,这个相当于获取了界面元素

18、问:我想在首页顶部导航上添加一个按钮,点击后跳转到另外一个页面。请问怎么实现,谢谢了

答:微信小程序有相关的API:
wx.navigateTo(OBJECT)
保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
OBJECT参数说明:
参数        类型        必填        说明
url        String        是        需要跳转的应用内页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'
success        Function        否        接口调用成功的回调函数
fail        Function        否        接口调用失败的回调函数
complete        Function        否        接口调用结束的回调函数(调用成功、失败都会执行)
示例代码:
wx.navigateTo({
  url: 'test?id=1'
})
//test.js
Page({
  onLoad: function(option){
    console.log(option.query)
  }
})
注意:为了不让用户在使用小程序时造成困扰,我们规定页面路径只能是五层,请尽量避免多层级的交互方式。
wx.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。
OBJECT参数说明:
参数        类型        必填        说明
url        String        是        需要跳转的应用内页面的路径
success        Function        否        接口调用成功的回调函数
fail        Function        否        接口调用失败的回调函数
complete        Function        否        接口调用结束的回调函数(调用成功、失败都会执行)
示例代码:
wx.redirectTo({
  url: 'test?id=1'
})
wx.navigateBack(OBJECT)
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。
OBJECT参数说明:
参数        类型        默认值        说明
delta        Number        1        返回的页面数,如果 delta 大于现有页面数,则返回到首页。

举个例子:
点击一个按钮后跳转
  buttonClick:function(e){
    var agrs ='我是参数';
    wx.navigateTo({
        url: '../order/order?order=' + agrs
    })
  },
其中的URL是工程里目标页面的相对路径。
至于你说的导航条左上角的按钮,需要自己去做UI,以上是逻辑层面的

19、问:关于php无法接收微信小程序POST传参

答:刚刚开始按照微信官方的方法写了一个POST传参,后台使用php进行解析入库。
但是突然发现GET能接收到传参,但是后台$_POST死活都没办法进行传参。
wx.request({
      url: 'https://localhost/XXX.php',
      data: {
        menu: data.detail.value.menu ,
      },
      /*header: {
          'content-type': 'application/json'
      },*/
      method:'post',
      success: function(res) {
        console.log(res.data)
      }
    })

查了资料,都说是
'content-type': 'application/json'

大小写的问题。但是我把它改成小写了还是不行。
后来仔细研究了发现,微信小程序通过POST的不是字符串,而是JSON信息,所以在后台是无法直接用$_POST进行解析的。

这个是我们正常POST信息浏览器对后台文件发送的post信息

这个是小程序POST的信息,所以我们就要处理一下才行了

php获取信息如下:

$menu = file_get_contents('php://input');
$val = json_decode($menu,true);
echo($val['menu']);
把json转换成数组以后就可以正常的进行数据处理了!

20、问:小程序 post 参数一直进不去 服务器端没接收到。
         推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图1) 

答:我试了下,php框架使用ThinkPhP。请求代码:
wx.request({
          url: 'https://localhost/api/getList',
          data: {lastid:lastid,limit:limit},
          header: {
              'Content-Type': 'application/json'
          },
          method:'post',
          success: function(res) { 
                var cc = res.data;
          },
          fail: function(res){  },
          complete: function(){  }
      })

post数据:
推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图2) 
后台代码(查询后返回,使用ajaxReturn返回数据到前端):
function getList(){    
            $list = M('mmc')->field('id,title,img,cTime')->limit($limit)->select();
            $this->ajaxReturn($list);
}

前端接收到的数据(success函数回调的res):
推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图3) 

21、问:微信小程序的用户信息可以做登录吗?请问小程序的用户信息可以做登录吗,只有头像和昵称,都没有唯一标识

答:获取微信信息有唯一标识
推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图4) 
这个应该是要和后台配合,自己生成一个session作为唯一标示,不能用openid
推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图5) 


22、问:微信的check方法里面的参数是什么?

答:
推荐收藏: 小程序开发者开发过程中会遇到的问题汇总(图6) 

23、问:在微信小程序里面能直接访问外部链接么

答:
微信小程序暂不支持加外部链接。会屏蔽所有<a>标签。

24、问:怎么自动给每个新页面都添加一个固定的浮层?手动用template引入肯定是可以的

答:
才疏学浅,能想到的只是调用模板。

定义模板
使用name属性,作为模板的名字。然后在<template/>内定义代码片段,如:
<template name="msgItem">
  <view>
    <text> Time: {{time}} </text>
  </view>
</template>


使用模板
使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如:
<template is="msgItem" data="{{...item}}"/>
Page({
  data: {
    item: {
      time: '2016-09-15'
    }
  }
})

25、问:进到一个页面,校验登录,失败,跳登录页;直接执行navigateTo或者redirectTo,调试器是可以正常工作的,但是手机端不可以,可以加定时器缓解,但是好像还是没法根治,在onlunch,onShow,onload都试过,都不怎么好用,请问问题出在哪里?

答:
试试onReady。

onReady        Function        生命周期函数--监听页面初次渲染完成

这才是页面渲染完毕的回调。

26、问:小程序里可以用iconfont之类的图标字体吗?

答:
一般web开发定义样式的话,有:外部样式,内部样式,内联样式。

显然小程序没有提供link、style标签,所以定义样式的地方只有wxss文件里和内联样式。
小程序API明确规定:本地资源无法通过 css 获取。在wxss加载外部字体库目前测试也是不生效的。

建议:background-image:可以使用网络图片,或者 base64,或者使用<image/>标签。
小图标直接转成base64,直接写在代码里,体积也很小,还方便。图标可以统一写在一个js里,到处引用。





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。