微信小程序学习指北(-)

234 阅读5分钟

前言:

工作很久了一直都没接触过小程序,趁这段时间了解一下。同时跟大家分享一下个人的一些见解。如果有问题,欢迎各位指正。

运行环境

不同于web端项目运行在浏览器环境,微信小程序是基于微信APP环境运行的。需要使用微信开发者工具开发,由于不在浏览器所以没有window全局对象,可以使用微信API提供的wx对象

小程序页面组成

一个小程序页面由四个文件组成,分别是:

  • .wxml:对应平时的html文件
    1. 标签名不一样,html常用div,p,span,小程序使用:text,block,view
    2. 小程序支持wx:if这样的属性以及{{name}}这样的表达式
  • .wxss: 对应平时的css文件
    1. wxss支持rpx,rpx:小程序独有的单位,可以做自适应。实现原理:小程序把屏幕分成750份,1rpx代表屏幕1/750(不用自己做适配真好)
    2. 使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。
  • .json: 小程序的配置文件,项目根目录下的app.json是全局配置,每个页面又会有自己的.json配置文件
  • .js: 就是js文件。支持ES6

app.json文件

app.json 是小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。

常用相关配置作用
pages配置小程序路由的地方,在这个数组里面加入一个路径,小程序会自动在pages文件夹创建对应的文件,数组第一项为小程序默认打开的页面
window配置小程序页面的地方,包括页头,标题等。navigation开头的是导航栏相关设置,background开头的是窗口相关
tabBar配置小程序底部导航栏的地方,数组类型,长度要大于等于2
networkTimeout配置网络请求超时
usingComponents注册全局组件

网络请求

在小程序里面请求数据也与之前不同,由于小程序宿主环境不是浏览器,所以基于XMLhttpRequest对象的ajax请求无法使用,(当然也不存在浏览器跨域问题),小程序里使用 wx.request()发送网络请求。小程序上线后只支持https类型的请求,开发阶段可以在开发者工具中->详情>本地设置> 勾选不校验合法域名。

    wx.request({
        url: "",
        method: "",
        success: ()=> {}, //成功回调,建议使用箭头函数,否则会导致无法使用this.setData()
        fail: ()=> {}, //失败回调
        complete: ()=> {} //无论失败成功都会执行
    })

页面导航

小程序里页面跳转使用方式有两种,并且区分跳转目标是否为tabBar页面

    //声明式:navigator组件
        <navigator url="" open-type="" delta=""></navigator>
        //注意:url必须'/'开始,导航到tabBar 
        // open-typem默认是'navigate',导航到非tabBar页面
        //导航到tabBar页面open-type必须是switchTab
        //后退 open-Type必须是navigateBack,delta后退多少步,默认1
    编程式:
        wx.navigateTo({url}) //导航到非tabBar
        wx.switchTab({url}) //导航到tabBar
        wx.navigateBack({delta}) //后退 delta后退多少 默认1

路由传参就是正常的拼在后面,如:xxx/index?name=122&age=18, 参数可以在小程序页面的onLoad事件接收

上拉加载和下拉刷新

是否默认开启作用
上拉加载是,可以在app.json或者页面的.json配置触发距离onReachBottomDistance滑倒距离底部一定的地方触发onReachBottom(),可以请求更多数据
下拉刷新否,需要在app.json或者页面的.json配置enablePullDownRefresh为true下拉时会触发onPullDownRefresh(),不会自动关闭下拉刷新,需要手动调用wx.stopPullDownRefresh()关闭下拉刷新效果

生命周期

小程序分别有小程序生命周期3个,页面生命周期5个,组件生命周期5个

小程序生命周期作用
onLaunchapp初始化完成 可以在这里初始化appData
onShow显示小程序时候调用
onHide隐藏小程序时候调用
页面生命周期作用
onLoad页面加载完成 ,可以在此处获取路由参数
onReady页面渲染完成
onShow显示页面时候调用
onHide隐藏页面时候调用
onUnLoad页面卸载
组件生命周期作用
created在组件实例刚刚被创建时执行,注意此时不能调用setData
attached在组件实例进入页面节点树时执行,可以请求初始数据
ready在组件布局完成后执行
moved在组件实例被移动到节点树另一个位置时执行
datached在组件实例被从页面节点树移除时执行

WXS

微信除了上面四种文件,还有自身独有的wxs文件,一般是用来格式化数据,类似于Vue的computed。WXS代码可以编写在wxml 文件中的  标签内,或以.wxs为后缀名的文件内

  • wxs有自己的数据类型
  • 不支持ES6
  • 遵循CommonJS规范
  • 不能作为事件函数
  • 不能调用js文件的函数以及wx提供的api
  • 在ios系统性能比js好,安卓系统都差不多
    <wxs module="moduleA"></wxs> //在wxml文件中使用定义
    //直接使用
    <view> {{moduleA(text)}} </view>
    
    module.exports.xxx={} //.wxs为后缀名的文件内定义
    //先引入在使用
    <wxs src="./../tools.wxs" module="moduleB" /> 
    <view> {{moduleB(text)}} </view>