小程序

600 阅读19分钟

onHide:监听页面的隐藏

  • 当从当前A页跳转到其他页面,那么A页面处于隐藏状态。

onUnload:监听页面的卸载

  • 当前处于A页面,点击返回按钮时,则将是A页面卸载
  • 触发upload事件

       1、页面重定向: wx.redirectTo
2、左上角返回按钮:wx.navigateBack
3、重启动:wx.reLaunch

跳转与返回的区别,跳转不成功的情况下尝试直接返回的形式.

同一项目设置多个appid

一个小程序配置多个不同的appid,根据不同的appid采用完全不同的链接,用于私人开发测试或者预发布

//配置不同的appid
export const APPID = {  goodsDevAppId: 'wxdd4bebc8c4b9217e',  JUDICIAL: 'wx5129014ec0d1fa55',};

//根据当前appid采取不同的baseurl链接
export const BASE_URL = (() => {  const appid = wx.getAccountInfoSync().miniProgram.appId;  return appid === APPID.goodsDevAppId ? DEV_BASE_URL : PRO_BASE_URL;})();

wx.getAccoutInfoSync()使用

developers.weixin.qq.com/miniprogram…

检测工作环境,根据不同的版本选择不同的env

function checkEnviroment() {  const {    miniProgram: { envVersion = 'release' },  } = wx.getAccountInfoSync();  let env = 'prod';  if (envVersion === 'develop') {    // 工具或者真机 开发环境    env = 'dev';  } else if (envVersion === 'trial') {    // 测试环境(体验版)    env = 'dev';  } else if (envVersion === 'release') {    // 正式环境    env = 'prod';  }  return env;  // return 'prod';}

根据env的值进行判断选择不同的url获取不同数据或者进行不同的操作

envVersion :‘develop’   env:‘dev’
envVersion :‘trial’   env:‘dev’
envVersion :‘release’   env:‘prod’

登录与获取授权

appid :小程序唯一标识

openid: 用户唯一标识

userid:授权获取用户id

wx.login :获取用户的 openID

wx.getUserInfo 接口,用于和基本信息(userid等)

wx.checkSession检测当前用户登录态是否有效

将 button 组件(其中 open-type 属性指定为 getUserInfo)放置到页面中,绑定为getUserInfo事件获取用户信息

navigateTo:fail:page limit exceeded: 10

  • 要想触发销毁页面onUnload生命周期执行方法,必须要使用不存在页面栈的路由。比如:wx.reLaunch、wx.redirectTo、wx.navigateBack

  • 不能使用wx.navigateTo,因为此路由是可以保存页面栈的,也就是并没有销毁页面,而是叠加页面栈,最多可以叠加5层。

  • wx.redirectTo会销毁当前页面,并添加新跳转到的页面(相当于替换)

  • wx.navigateBack会销毁当前页面,并跳转到栈的上一个页面(回退)

navigateBack:fail cannot navigate back at first page

var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面bai
//直接调用上du一个页面的setData()方法,把数据存到上zhi一个页面中去dao
prevPage.setData({
mydata: {a:1, b:2}
})

可以用用getCurrentPages()  查看一下 页面的栈  , 当前的页面,返回目标的页面,是否在这个栈里面

比胖项目中

1.保持image的宽高缩放比 , 设置模式  , 默认宽为320px

2.文字滚动功能

3.setdata 为响应式的 , 直接  赋值操作非响应式

4.应用周期指的是app 文件的 周期 ,  page生命周期是page页面的 , 组件生命周期是组件内

5.获取用户信息几种方法 (印象中有  4 种)

   open-data  可以直接获取  , 无需授权

  getuserinfo  需要获取用户权限   , 是属于 button 标签的开放功能

登录流程 :  wx.login  获取code  ===》  使用 code  发起请求获取信息  .....

6.关于滑动条思路 :    

 可移动总长度  =  获取movable-area  总长度 -  movable-view 在滑动条上的长度 

左侧已移动的距离 : 使用 movable-view 上的 bindchange 事件即可以获取 x 距离左侧滑动的距离;

可移动总长度设置的总数据 :即滚动条上的数值范围 , 由自己设置

左侧已移动的距离 /  可移动总长度  =  当前获取的数据  /  可移动总长度设置的总数据

7. 使用微信小程序 component 里的 slot 时,当只用一个 slot 并且将 slot 命名后,页面中调用这个 slot 并不会加载进来。去掉slot中name  

或者开启多slot支持

研究尝试后发现,如果想要使用命名的方式调用单个 slot ,也需要像调用多个 slot 的方式 在 component/xxx.js 里开启多个 slot 的功能。

  8 .mask  有滚动条  遮盖全屏

本用position:absolute;页面滚动遮罩层不会覆盖下方内容,换成position:fixed;就可以解决问题了。
.mask {
position: fixed;
z-index: 99;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
overflow: auto;
backdrop-filter: blur(10px);
opacity: 0.4;
background: #000;
}

9. 生成海报 , 画布使用

 wx.getImageInfo({          src: userInfo.avatarUrl,          success: res => {            this.setData({              // 游戏性别              paintPallette: new HappyShare(                res.path,                userInfo.nickName              ).palette(),            });

当paintPallette改变 , 即***完成之后





10 小程序组件中设置data中的值,响应式,注意在attached生命周期中设置有效

11  小程序冒泡事件  catch  和bind  的区别

12 组件中可设置组件生命周期(lifetimes) 与 组件所在页面的钩子函数(pageLifetimes)

13 hidden 与 wx:if 的区别使用

14  scroll-view    滚动到底部的触底功能函数  一般添加 防抖操作(一般用于监听滚动 ,页面间距变化等)

15   注意 小程序  的  下拉刷新功能   与  scroll-view  存在的冲突关系 , 可能让下拉失效

16 button  按钮设置样式   - 存在背景色 与 内边距

17 小程序字体设置  ttf 文件 转为 **base64 ** 在app.wxss 中添加该字体 @font-face

18   小程序使用图片一般用线上 ,因为放置本地代码包上线2M,可将其图片压缩;

 另:   css样式中背景图片无法使用本地图片,可使用外链,或将其转为  base64  使用

 另 :  小程序使用云开发  ---  云存储  可放置本地图片 , 使用cdn链接地址

19  小程序图片预览功能 可以长按识别  小程序码 

20 使用小程序  公众号引导   某某组件

21 web-view  使用