美文网首页
微信小程序

微信小程序

作者: J_L_L | 来源:发表于2017-05-02 09:52 被阅读0次

    1、安装

    官网链接 https://mp.weixin.qq.com/wiki

    2、目录结构介绍

    框架程序包括一个描述整体程序的app 和多个描述各自页面的page

    3、app.json配置项列表

    3.1pages配置

    接受一个数组,每一项都是字符串,来指定小程序有哪些页面组成。每一项代表对应页面的路径,
    数组的第一项代表小程序的初始页面。小程序中新增或减少页面,都需对pages数组进行修改

    {
     "pages":[
        "pages/index/index"//初始页面拓展名不用写
        "pages/logs/logs"  //拓展名不用写,新建页面时在这里注册后保存,即会在项目目录下生成该页面文件了
      ]
    }
    

    3.2 window配置

    用于设置小程序的状态栏、导航条、标题、窗口背景颜色等



    3.3 tabBar

    数组,最少2个,最多5个,按数组的序列排列



    还可以通过position属性来设置tabBar的位置,有bottom和top两种
    list参数是一个数组,数组中每一项都是一个对象,其属性值如下


    3.4 networkTimeout

    可以设置各种网络请求的超时时间

    3.5 debug

    4 page.json

    5 app.js

    定义App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等
    生命周期函数有



    一般在onHide时要添加一个提示框 确认是否要退出

    6 注册页面

    onShareAppMessage在api中查看用法

    7 路由

    页面跳转页面有api和组件两种方式
    navigateTo, redirectTo 只能打开非 tabBar 页面。
    switchTab 只能打开 tabBar 页面。
    reLaunch 可以打开任意页面。

    8 模块化开发

    在根目录新建js文件夹或文件,在里面定义复用性较高的函数采用以下方式暴露出去

    module.exports.sayHello = sayHello
    exports.sayGoodbye = sayGoodbye
    在需要的地方采用以下方式定义并且使用

    var common = require('common.js') // 此处暂不支持绝对路径
    Page({
      helloMINA: function() {
        common.sayHello('MINA')
      },
      goodbyeMINA: function() {
        common.sayGoodbye('MINA')
      }
    })
    

    6 点击事件 https://my.oschina.net/kaiyuanlong/blog/1620098

    事件处理函数 点击是 bindtap (阻止冒泡事件的发生,其实很简单,直接把bindtap改为catchtap即可)
    场景:最近开发微信小程序时候遇到了点击页面中的元素,js捕捉点击事件,并获取该元素的一些属性(比如我自定义了一个author="季兰兰"),那么如何快速获取这个属性呢?其实首先要改变一下写法,用【data-】开头,元素属性即为data-author="季兰兰",并且绑定一个点击事件,bindtap='getAuthor'。
    wxml部分

    <view data-author='季兰兰' bindtap='getAuthor'>获取作者名称</view>
    

    接下来重点来了 js部分

    getAuthor : function(e){
    
    console.log(e.currentTarget.dataset.author);//打印季兰兰
    
    //看一下e对象的值
    
    console.log(e);
    

    注意:里面有两个对象存在我们要获取的内容 一个是target一个是currentTarget 区别简单来说是

    e.target 指向触发事件监听的对象。
    e.currentTarget 指向添加监听事件的对象。

    MDN中对target的解释为,一个触发事件的对象的引用, 当事件处理程序在事件的冒泡或捕获阶段被调用时。
    而对于currentTarget,它指的是当事件遍历DOM时,标识事件的当前目标。它总是引用事件处理程序附加到的元素,而不是event.target,它标识事件发生的元素。

    7 swiper 滑块视图容器

    https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html
    注:current属性 表示当前所在滑块的 index
    bindchange属性 当current 改变时会触发 change 事件,event.detail = {current: current, source: source} 通过e.detail.current取到新的current值
    其中只可放置<swiper-item/>组件,否则会导致未定义的行为。

    8 scroll-view组件

    小程序编辑的页面有时候能整体随着手的滑动而左右偏移,这样体验不好,可以在最外面套一个scroll-view组件(如果竖向要滚动须设置他的高度) 再在外面套一个相对定位top bottom left right 都为0的盒子 页面就不会左右动了

    9 微信小程序使用navigateTo数据传递json的实例(坑)

    https://blog.csdn.net/a690197843/article/details/78567556
    http://www.jb51.net/article/124573.htm

    10小程序在数据绑定中取整

    后面加|Int 过滤就可以了
    <view>{{aaa/bbb|Int}}</view>

    11小程序遇到push问题

    arr1.push(arr2)
    当中arr1需要缓存并且是动态获取到的 第一次没有缓存记录 所以它不是数组,arr2是字符串
    只需在获取缓存数据时判断得到的是不是数组
    例如

    var History = wx.getStorageSync('history')||[]

    通过 ES6 的 模板字符串 和 属性名表达式,注意在项目配置里面开启ES6 转 ES5。

    12小程序遇到无法更改data里单个数组的问题

    13下拉刷新 上拉加载

    下拉刷新
    1、调用系统的API,系统有提供下拉刷新的API接口 onPullDownRefresh/
    2、监听scroll-view,自定义下拉刷新,还记得scroll-view里面有一个bindscrolltoupper属性吗?当滚动到顶部/左边,会触发 scrolltoupper 事件,所以我们可以利用这个属性,来实现下拉刷新功能。

    上拉加载
    1、调用系统的API onReachBottom
    2、监听scroll-view,bindscrolltolower滑动到底部的监听

    注意:在小程序中,scroll-view组件 与 onPullDownRefresh不能同时使用,一起使用,下拉scroll-view不能触发onPullDownRefresh事件。

    相关文章

      网友评论

          本文标题:微信小程序

          本文链接:https://www.haomeiwen.com/subject/rbxpottx.html