逆战小程序篇

JSON 配置
在小程序中,JSON扮演的静态配置的角色。

小程序配置 app.json

{
    "pages": ["pages/index/index", "pages/logs/logs"],
     "window": {
         "backgroundTextStyle": "light",
         "navigationBarBackgroundColor": "#fff",
         "navigationBarTitleText": "WeChat",
         "navigationBarTextStyle": "black"
     }
 }

pages字段 —— 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。
window字段 —— 定义小程序所有页面的顶部背景颜色,文字颜色定义等。

全局配置

tabBar

如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

其中 list 接受一个数组,只能配置最少 2 个、最多 5 个 tab。tab 按数组的顺序排序,每个项都是一个对象

{
     "pages": ["pages/index/index", "pages/logs/index"],
      "tabBar": {
          "list": [
              {
                  "iconPath": "assets/fonts/首页.png",
                  "selectedIconPath": "assets/fonts/home.png",
                  "pagePath": "pages/index/index",
                  "text": "首页"
              },
              {
                  "pagePath": "pages/logs/logs",
                  "text": "日志"
              }
          ]
      }
    }

tabBar 还有其他属性

颜色仅支持十六进制,定位仅支持top和bottom,其中top时不支持图标。

{
    "tabBar": {
        "color": "#ff00ff",
        "selectedColor": "#0000ff",
        "backgroundColor": "#00ff00",
        "position":"bottom"  
    }
}

页面配置

每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置。页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项

页面配置中只能设置 app.json 中 window 对应的配置项,以决定本页面的窗口表现,所以无需写 window 这个属性。

WXML 模版

WXML 充当的就是类似 HTML 的角色。block标签的作用是直接解析里面的内容,不解析自身block标签。

WXSS 样式
WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改。

新增了尺寸单位。在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。

提供了全局的样式和局部样式。和前边 app.json, page.json 的概念相同,你可以写一个 app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。

此外 WXSS 仅支持部分 CSS 选择器

小程序api

获取登录用户的数据

// 获取登录用户的数据
    wx.getUserInfo({
      //withCredentials: true,
      success: (res) => {
        console.log(res);
        let user = res.userInfo;
        this.setData({
          user
        })
      }
    })  

数据存储(全局缓存中存取)

存数据:setStorage, 同步: setStorageSync 
// 数据存储
    wx.setStorage({
      key: 'isCollected',
      data: oldCollectFlag
    })

2) 获取数据:getStorage  同步: getStorageSync
let oldCollectFlag = wx.getStorageSync('isCollected');

发送请求
官方文档

wx.request({ // 发送请求
  url: API_URL, // 请求的url
  header: { // 设置请求头
    'Content-type': 'json',
  },
  success: (res) => {  // 请求成功的回调函数
    // 隐藏提示加载信息
    wx.hideToast();
    console.log(res);  // 请求的成功的数据对象,注意是封装后的对象
  }
})
wx.request({
    url: url,
    data: params,
    header: {
      'content-type': 'application/x-www-form-urlencoded',
      "Cache-Control": "no-cache"
    },
    method: method,
    success: function (res) {

      //console.log(res);

    },
    fail: function (res) {

    },
    complete: function (res) { },
  })

小程序组件化
wxml节点信息API

在小程序中使用wx.createSelectorQuery()获取到SelectorQuery对象,这个对象提供了对应的节点操作方法
in(this) 将节点选区范围指向当前组件,默认只会查找当期页面
select() 根据css选择器查询到匹配结果的第一个元素节点,返回的 NodesRef对象实例
selectAll() 和select一样只不过他可以匹配多个
selectViewport() 选择显示区域(页面),可用于获取显示区域的尺寸、滚动位置等信息,返回一个NodesRef对象实例。
exec() 执行所有的请求,请求结果按请求次序构成数组,在callback的第一个参数中返回。

NodesRef对象
1、 boundingClientRect([callback])
获取节点信息, 返回值相对于显示区域,以像素为单位。
返回节点的信息有left、right、top、bottom、width、height 如果提供了callback回调函数,在执行selectQuery的exec方法后,节点信息会在callback中返回

2、scrollOffset([callback])
获取滚动位置信息,只针对与scroll-view组件以及viewport页面起作用,返回值是scrollLeft、scrollTop,如果提供了callback回调函数,在执行selectQuery的exec方法后,节点信息会在callback中返回

3、fields(Object, [callback])
指定获取那些信息 (id, dataset, rect, size, scrollOffset , properties=[获取的常规属性名称(注:id class style 除外)

微信小程序生命周期、页面生命周期、组件生命周期

  1. 生命周期 App(全局)
    位置:项目根目录app.js文件
App({
  onLaunch (options) {
    // 
    console.log('小程序初始化')
 
  },
  onShow(options) {
    console.log('监听小程序启动或切前台')
  },
  onHide() {
    console.log('监听小程序切后台')
  },
 
  onError(msg) {
    console.log('错误监听函数')
  },
  onPageNotFound(res) {
    console.log('小程序要打开的页面不存在时触发');
    wx.redirectTo({ // 重定向
      url: 'pages/...'
    }) // 如果是 tabbar 页面,请使用 wx.switchTab
  }
  
})
  1. 页面生命周期
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
 
  },
 
  /**
   * 生命周期函数--监听页面加载
   * 一个页面只会调用一次,可以在onLoad中获取当前页面从上一级页面带过来的参数
   */
  onLoad: function (options) {
 
  },
 
  /**
   * 生命周期函数--监听页面初次渲染完成
   * 一个页面只会调用一次,代表当前页面已经准备妥当,可以和视图层进行交互
   */
  onReady: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面显示
   * 每次打开页面都会调用一次,如果需要每次进入页面时刷新数据,可在此方法中实现
   */
  onShow: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面隐藏
   * 当navigateTo或底部tab切换时调用
   */
  onHide: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面卸载
   * 当redirectTo或navigateBack的时候调用
   */
  onUnload: function () {
 
  },
 
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
 
  },
 
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
 
  },
 
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
 
  }
})
  1. 组件生命周期
// pages/myComponent.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
 
  },
 
  /**
   * 组件的初始数据
   */
  data: {
 
  },
 
  /**
   * 组件的方法列表
   */
  methods: {
 
  },
 
  /*组件生命周期*/ 
  lifetimes: {
    created() {
      console.log("在组件实例刚刚被创建时执行")
    },
    attached() { 
      console.log("在组件实例进入页面节点树时执行")
    },
    ready() {
      console.log("在组件在视图层布局完成后执行")
    },
    moved() {
      console.log("在组件实例被移动到节点树另一个位置时执行")
    },
    detached() {
      console.log("在组件实例被从页面节点树移除时执行")
    },
    error() {
      console.log("每当组件方法抛出错误时执行")
    },
    /*组件所在页面的生命周期 */
    pageLifetimes: {
      show: function () {
        // 页面被展示
        console.log("页面被展示")
      },
      hide: function () {
        // 页面被隐藏
        console.log("页面被隐藏")
      },
      resize: function (size) {
        // 页面尺寸变化
        console.log("页面尺寸变化")
      }
    }
   
  }
 
})
 
发布了1 篇原创文章 · 获赞 1 · 访问量 22

猜你喜欢

转载自blog.csdn.net/m0_46152845/article/details/104465042