小程序备忘

小程序备忘,第1张

程序开发工具--详情--本地设置--启用自定义处理命令

用来执行脚本

为了提升用户 *** 作的流畅性,同时让用户在微信内拥有一致的 *** 作体验,“右滑手势返回”将成为基础配置,即所有小程序内都可以从屏幕左侧边缘向右滑动返回上一个界面。 在即将发布的705客户端版本中,页面配置中的 disableSwipeBack 属性将不再生效,请开发者及时调整。

背景图为fixed, top随滚动而改变 。 重点就是 onPageScroll

还可使用 scroll-view 的下拉刷新,且可以自定义样式。

用wxs监听滚动事件,设置样式。

不在以下 request 合法域名列表中,请参考文档

解决方案:在详情--本地设置中勾选“不校验合法域名。。。”

mode widthFix 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变。应避免使用widthFix,尽量指定宽高。

导航栏高度

iOS 44px (4+32+8)

android 48px (8+32+8)

胶囊与状态栏间距(应该计算得出)ios 4px,Android 8px,与导航栏底边距8px(只能取固定值)。

胶囊高度 32px

状态栏高度,刘海屏通常为44px

setData 是小程序开发中使用最频繁、也是最容易引发性能问题的接口。

因此,开发者在调用 setData 时要注意:

数组索引不能直接用变量,解决方案:

取原来的值:

在onUnload中取消timer

微信小程序中,可以用 hover-class 属性来指定元素的点击态效果。但是在在使用中要注意,大部分组件是不支持该属性的。

目前支持 hover-class 属性的组件有三个:view、button、navigator。

不支持 hover-class 属性的组件,同时也不支持 hover-stop-propagation、hover-start-time、hover-stay-time 这三个属性。

如果background写在wxml中,那么background-size也要写在style中,如果写在wxss中不会生效。

获取系统屏幕边框的安全距离:

safe-area-inset-top

safe-area-inset-right

safe-area-inset-bottom

safe-area-inset-left

ios11:constant(safe-area-inset-bottom)

ios112:env(safe-area-inset-bottom)

scroll-view的子元素最好包一层,不然宽度可能不起作用。

当小程序使用页面进行滚动时,可以给遮罩设置catchtouchmove属性来禁止页面滚动

在微信小程序中,我们经常会使用thissetData来修改数据,但有时候发现,this拿不到,到底是为什么呢?

当我们通过wxrequest请求网络数据成功后绑定数据时候报以下错误

这是因为this作用域指向问题 ,success函数实际是一个闭包 , 无法直接通过this来setData

方法一:保留this的副本that

方法二:回调函数使用函数声明(箭头函数)的写法

从上面情景中我们发现,问题主要出现在调用接口的回调函数中,所以我们在success或者fail回调函数中要setData的时候,就要选择其中一种方式来避免this丢失

根据导出的GPX文件,在地图上绘制其路径轨迹。

GPX: the GPS Exchange Format

GPX (GPS交换格式)是一种轻量级XML数据格式,用于在互联网上的应用程序和Web服务之间交换GPS数据(路径、路由和跟踪)。

在线XML转JSON - BeJSON

为了方便后续绑定使用,转换后批量将“lat”替换为“latitude”、“lon”替换为“longitude”。

将转换后的JSON文件部署到本地服务器,先进行本地测试。

通过 wxrequest 获取数据: 微信小程序通过api接口将json数据展现到小程序示例

使用本地链接进行测试会报错,需要将项目设置里勾选上“不校验”: 微信小程序 微信小程序连接本地接口

本地测试没问题后,将文件部署到外网环境,改下url就可以了。

由于数据格式已经与小程序要求的一致了,直接将其赋给对应的Key即可。

需要注意的是,在 wxrequest 回调里直接使用 thissetData 会报错: 微信小程序中this指向作用域问题thissetData is not a function报错 。

至此,已基本满足预研需求,后续开发具体功能时会方便不少啦 ~ O(∩_∩)O ~

如果能够显示 卫星地图 就完美了,不过还没找到好的解决方案,留作另一个问题吧,TX不开放也没办法了。

 <button bindtap="powerDrawer" type="primary" size="mini" style="width: 55%;" data-statu="open">中奖记录</button>  

<!-- 中间名单d窗 -->

<view class="drawer_div">

  <view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>

    <view animation="{{animationPrize}}" class="drawer_box" wx:if="{{showModalStatus}}">

      <view class="drawer_title">

        中奖记录

        <image src="/img/x@2xpng" bindtap="powerDrawer" data-statu="close"></image>

      </view>

      <view class="drawer_content">

        <view class="top grid">

          <text>

            名称:啦啦啦啦啦啦啦啦

          </text>

          <text>

            时间:2020-02-20

          </text>

        </view>

        <view class="top grid">

          <text>

            名称:啦啦啦啦啦啦啦啦

          </text>

          <text>

            时间:2020-02-20

          </text>

        </view>

    </view>

  </view>

</view>

drawer_screen {

  width: 100%;

  height: 100%;

  position: fixed;

  top: 0;

  left: 0;

  z-index: 1000;

  background: #000;

  opacity: 05;

  overflow: hidden;

}

/content/

drawer_box {

  width: 650rpx;

  overflow: hidden;

  position: fixed;

  top: 50%;

  left: 0;

  z-index: 1001;

  background: #FAFAFA;

  margin: -150px 50rpx 0 50rpx;

  border-radius: 3px;

}

drawer_title{

  padding:30rpx 20rpx;

  font-size: 36rpx;

  text-align: center;

  position: relative;

}

drawer_title image{

  display: inline-block;

  width: 30rpx;

  height: 30rpx;

  position: absolute;

  right: 9px;

  top: 10px;

}

drawer_content {

  height: 210px;

  overflow-y: scroll; /超出父盒子高度可滚动/

  padding: 0 20rpx;

}

top{

  display: flex;

  justify-content: space-between;

  border-bottom: 1px dashed #ccc;

}

top text{

  display: inline-block;

  height: 60rpx;

  line-height: 20rpx;

}

data: {

animationPrize: {},

}

powerDrawer: function (e) {

    // consolelog(e);

    let currentStatu = ecurrentTargetdatasetstatu;

    thisutil(currentStatu);

  },

  util: function (currentStatu) {

    / 动画部分 /

    // 第1步:创建动画实例

    var animation = wxcreateAnimation({

      duration: 200,  //动画时长

      timingFunction: "linear", //线性

      delay: 0  //0则不延迟

    });

    // 第2步:这个动画实例赋给当前的动画实例

    thisanimation = animation;

    // 第3步:执行第一组动画

    animationopacity(0)rotateX(-100)step();

    // 第4步:导出动画对象赋给数据对象储存

    thissetData({

      animationPrize: animationexport()

    })

    // 第5步:设置定时器到指定时候后,执行第二组动画

    setTimeout(function () {

      // 执行第二组动画

      animationopacity(1)rotateX(0)step();

      // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象

      thissetData({

        animationPrize: animation

      })

      //关闭

      if (currentStatu == "close") {

        thissetData({

          showModalStatus: false

        });

      }

    }bind(this), 200)

    // 显示

    if (currentStatu == "open") {

      thissetData({

        showModalStatus: true

      });

    }

  },

redirectTo :关闭当前页(卸载),跳转到指定页

navigateTo :保留当前页(隐藏),跳转到指定页

switchTap :只能用于跳转到tabbar页面,并关闭其他非tabbar页面,tabbar之间做切换

注意:switchTab只能跳转到带有tab的页面,不能跳转到不带tab的页面!

list页面:

detail页面:

eventtarget指的是当前点击的组件

eventcurrentTarget指的是事件捕获的组件

bindchange 这个事件官方文档中没有写,效果基本和 bindblur 一样,但失去焦点时不会被重复触发,所以一般还是采用 bindblur

小程序对于全局 wxss 组件的继承只能继承 font 以及 color 类型

bind事件绑定不会阻止冒泡事件,而catch会阻止冒泡事件,看官方文档有介绍

在指定的css属性最后带上 ! important 能够加强属性的优先级

wxs 只是与 JavaScript 相似,并非 JavaScript ,所以无法定义 const 常量,得用 var

wxs 存在的意义就是充当 compute/filter 这类功能。

且当使用 wxs 进行数据绑定时,要注意 setData 出来的数据的二次读取,

因为 setData 之前首先会进行一次初始化

wxs编写 :

wxml使用 :

关于 thisdata 与 thissetData 的使用细节

thisdata 使用于同步 *** 作(如 onLoad 加载),而 thissetData 适用于异步 *** 作(如 wxrequest )

<Tabs aaa="123> </Tabs>

properties:{

aaa:{

type:String,

value:"123"

}

}

<Tabs binditemChange="handleItemChange"> </Tabs>

handleItemChange(e){

const {index}=edetail

let {list} =thisdata

}

listforEach((a,b)=>b===indexaisActive=true:aisActive=false)

thissetData({

list

})

const {index} =ecurrentTargetdataset

触发父组件中的自定义事件,同时传递数据给父组件

thistriggerEvent('父组件自定义事件的名称',要传递的参数)

thistriggerEvent("itemChange",{index})

今天开始学微信小程序,做了一个简单的todolist小demo,先上效果图

wxml文件:

js文件:

wxss文件:

特别注意的时,微信小程序没有像vue那样可以双向数据绑定,它是通过 thissetData() 来把变量渲染到视图层,所以这里要特别注意它的使用

wxs脚本存在的意义是因为小程序的渲染机制决定的。小程序的webview 与 js逻辑渲染的分离导致小程序在某些场景需要高频触发thissetData() 时会出现卡顿现象,为了解决卡顿场景wxs 脚本顺势而生。

官方介绍:

wxs脚本的解决方案:wxs脚本是运行在wxml视图层的,避开了跨线程通信的成本。wxs可以直接 *** 作wxml的视图元素,也可以充当类似vue 中computed的角色来格式化数据,减少调用thissetData()的次数,减少性能损耗。

wxs 需要注意的是只能通过consolelog()来调试脚本,无法通过debugger和断点进行。

使用实例详看官方文档( >

以上就是关于小程序备忘全部的内容,包括:小程序备忘、微信小程序的this和that的用法、【小程序】地图|绘制GPX轨迹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10637057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存