小程序开发——小程序项目的配置与生命周期

news2024/11/19 20:25:57

1.app.json配置属性

app.json配置属性

 

2.页面配置

app的页面配置指的是pages属性, pages数组的第一个页面将默认作为小程序的启动页。利用开发工具新建页面时,则pages属性对应的数组将自动添加该页面的路径,若是在硬盘中添加文件的形式则不会触发该效果。pages属性配置示例代码如下所示:

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs"
  ],
  }

上述代码中pages数组里页面路径之间用英文逗号分开,最后一个页面路径不加逗号,这里要注意json文件的语法,如不能添加注释在json文件中等。

 

3.窗口配置

window属性对应的是一个json对象,可用于配置小程序顶部navigationBar的颜色、标题文字,且均作用于全局。如果页面的json文件不再进行单独的配置,全部页面都将默认使用app.json文件中window属性的配置。window的子属性说明如表所示:

属性名称

类型

默认值

解释

navigationBar backgroundColor

HexColor

#000000

导航栏背景颜色,默认值表示黑色。

navigationBarTextStyle

String

white

导航栏标题颜色,默认值表示白色,该属性值只能是whiteblack

navigationBarTitleText

String

 

导航栏标题文字内容,默认无文字内容

navigationStyle

String

default

导航栏样式,default表示默认格式。custom表示自定义导航栏,只保留右上角的小图标(微信版本6.6.0以上支持此功能)。

backgroundColor

HexColor

#ffffff

窗口的背景颜色,默认值表示白色。

backgroundTextStyle

String

dark

下拉加载的样式,选填darklight

backgroundColorTop

String

#ffffff

顶部窗口的背景颜色,只有iOS有效(微信版本6.5.16以上支持此功能)。

backgroundColorBottom

String

#ffffff

底部窗口的背景颜色,只有iOS有效(微信版本6.5.16以上支持此功能)

enablePullDownRefresh

Boolean

FALSE

是否开启下拉刷新功能。

onReachBottomDistance

Number

50

页面上拉触底事件触发时距页面底部距离,单位为像素px

 

4.tabBar配置

tabBar属性:tabBar是固定在软件主界面底部的类似于单选按钮作用的横条,选中不同的选项按钮后,主界面就切换成不同的页面。tabBar的配置属性如表所示。

tabBar配置实例

“微信小程序示例”,主界面使用了tabBar

 

“微信小程序示例”的app.json源代码:

"tabBar": {
    "color": "#7A7E83",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [{ "pagePath": "page/component/index",
           "iconPath": "image/icon_component.png",
           "selectedIconPath": "image/icon_component_HL.png",
           "text": "组件" },
          { "pagePath": "page/API/index",
           "iconPath": "image/icon_API.png",
           "selectedIconPath": "image/icon_API_HL.png",
           "text": "接口" },
          { "pagePath": "page/cloud/index",
           "iconPath": "image/icon_cloud.png",
           "selectedIconPath": "image/icon_cloud_HL.png",
           "text": "云开发" } ] }

 

5.网络超时配置

networkTimeout属性用于设置网络超时时间,其子属性配置如表所示:

属性

类型

必填

默认值

说明

request

Number

60000

wx.request 超时时间,单位毫秒

connectSocket

Number

60000

wx.connectSocket超时时间,单位毫秒

uploadFile

Number

60000

wx.uploadFile超时时间,单位毫秒

downloadFile

Number

60000

wx.downloadFile超时时间,单位毫秒

 

6.权限配置

接口权限

代码说明

permission属性用于小程序接口权限相关设置,字段类型为Object。以位置权限为例,小程序若想要获取用户的位置信息,需在app.json中配置permission属性,代码如下所示:

{
  "pages": ["pages/index/index"],
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示" 
    }
  }
}

用户信息、地理位置等权限出于隐私原因需经过用户授权后才能获取,因此,在首次调用小程序的wx.getLocation等接口获取用户定位时会跳出弹窗,提醒用户进行授权,代码如下所示:

wx.getSetting({ //wx.getSetting用于获取小程序当前需授权接口的授权情况
      success(res) {
        if (!res.authSetting['scope.userLocation']) {// scope是一个长列表,包含所有权限, 
          wx.authorize({ //则调用wx.authorize弹出弹窗
            scope: 'scope.userLocation',
            success() {
              // 用户已经同意小程序使用定位功能,后续调用不会弹窗询问
              // wx.getLocation({...}) }  })} }})

 permission属性配置地理位置用途的授权弹窗如图所示:

需要注意的是,图5-2的项目是使用了申请了正式APPID的小程序项目,若使用测试号,如果测试号小程序本身已授权位置权限,则上述授权代码不会再进行弹窗询问授权。

后台能力权限

requiredBackgroundModes属性用于申明需要后台运行的能力,属性值类型为数组。目前该属性支持以下后台能力:

audio: 后台音乐播放 location: 后台定位

示例代码如下:

{
  "pages": ["pages/index/index"],
  "requiredBackgroundModes": ["audio", "location"]
}

 在此处申明了后台运行的接口,开发版和体验版上可以直接生效,正式版还需通过审核。

7.小程序的生命周期

小程序生命周期函数

小程序的生命周期主要有初始化、启动和切后台,分别对应onLaunch、onShow、 onHide三个函数,而这三个函数是定义在app.js项目逻辑文件中,在注册小程序时作为参数传入函数APP()的。生命周期函数具体说明如表所示:

小程序生命周期测试案例

 

 

 

 新建项目Chapter05,新建lifeCycle页面。在自动新建的app.js文件中可以看到如下代码:

//app.js项目逻辑文件
App({
  onLaunch: function () {
   //省略
  },
  globalData: {  userInfo: null  }
})

APP函数中传入的大型参数中就包括onLaunch方法,它主管整个项目生命周期的初始化环节,除了onLaunch方法之外,还有onShow以及onHide,可以添加上这两个方法在app.js进行测试,代码如下所示:

//app.js项目逻辑文件
App({
  onLaunch: function () {
    console.log("---onLaunch--");
  },
  onShow: function () {
    console.log("---onShow--");
  },
  onHide: function () {
    console.log("---onHide--");
  }
})

 

8.使用app对象的案例讲解

实现效果

调用app对象可以使用app.js中定义的全局函数和变量。本节介绍一个传递用户名的案例,首先定义app.js中的变量和函数,然后在其他页面中使用app对象,并调用app.js中的函数以获取全局用户名,案例实现效果如图所示

app.js中定义全局变量与函数

//app.js
App({
  onLaunch: function () {
    //项目启动时逻辑
  },
  /** 定义在app.js中的全局函数 */
  testApp(){
    this.globalData.userName='Toky'
  },
  globalData: {
    userName: null  //定义在app.js中的全局变量
  }
})

 页面获取app对象

<!--index.wxml-->
<view class='container'>
  <view class='page-body'>
    <text class='h1'>使用app对象的案例讲解</text>
    <view class='demo-box'>
      <view class="title">点击按钮调用app.js中testApp函数</view>
      <button type="primary" bindtap="getUserName">点击调用</button>
      <view class="title">app.js中定义的全局用户名是:
        <text>{{name}}</text>
      </view>
    </view>
  </view>
</view>
//index.js
const app = getApp() //获取应用实例
Page({
  data: {
    name:null
  },
  //事件处理函数
  getUserName: function() {
    app.testApp()
    this.setData({ name: app.globalData.userName})
  }
})

 

9.小结

主要讲解了小程序项目层面的配置与生命周期等,具体涉及app.json文件作用的小程序全局配置,app.js文件作用的小程序项目的3个周期函数运行情况,最后结合案例讲解了app对象的具体使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1149897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连接数据库加密方式

首先需要一个加密的类&#xff0c;我们这里使用的是RSAUtil类&#xff1a; package com.ebs.common.util;import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Component;import javax.crypto.Cipher; import java.io.ByteArrayOutputStre…

Selenium3-获取元素的css属性

来个元素CSS值 代码1: 通过javaScript执行脚本获取css值 String jsStr "return document.getElementById(\"buyers\").style.getPropertyValue(width)"; Object o ((JavascriptExecutor) driver).executeScript(jsStr); System.out.println(o.toString(…

webJL

3D开发初体验&#xff0c;入门教程 效果图&#xff1a; 结合VUE的实现代码&#xff1a; <template><view class""><view id"aaa" ref"webglContainer"></view></view> </template><script>import *…

谈思生物医疗直播 | 霍德生物研发中心负责人王安欣博士“iPSC衍生神经细胞产品全悬浮自动化工艺及特殊质控方法开发”

iPSC通过人体来源的终端体细胞重编程而来&#xff0c;其衍生细胞产品的生产与质控面临着诸多挑战&#xff0c;但也解决了许多自体细胞治疗的不稳定性和高成本等产业化难点。例如自体细胞不仅供体之间的差异对产品质量可能造成影响&#xff0c;即使同一个供体&#xff0c;体细胞…

纯css实现手机端loading

纯css实现手机端loading <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"wid…

3D网页游戏外包开发引擎

3D网页开发引擎是用于创建具有三维图形、虚拟现实和交互性的网页应用程序的工具。以下是一些常用的3D网页开发引擎以及它们的主要特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.Three.js&…

内置视图联动查看器,实现数据关联分析

前言 在数据驱动业务发展的今天&#xff0c;数据的关联分析变得越来越重要。作为一种强大的数据挖掘工具&#xff0c;它可以帮助企业发现数据之间的关联和模式&#xff0c;从而更好地理解市场和客户的行为。通过关联分析&#xff0c;企业可以发现看似无关的数据之间的联系&…

Android NDK开发详解之Application.mk探秘

Android NDK开发详解之Application.mk探秘 概览变量APP_ASFLAGSAPP_ASMFLAGSAPP_BUILD_SCRIPTAPP_CFLAGSAPP_CLANG_TIDYAPP_CLANG_TIDY_FLAGSAPP_CONLYFLAGSAPP_CPPFLAGSAPP_CXXFLAGSAPP_DEBUGAPP_LDFLAGSAPP_MANIFESTAPP_MODULESAPP_OPTIMAPP_PLATFORMAPP_PROJECT_PATHAPP_STL…

怎么实现在外远程访问连接家里内网的威联通NAS?

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 前言 购入威联通NAS后&#xff0c;很多用户对于如何在外在公网环境下的远程访问威联通NAS…

1.5 安全机制

思维导图&#xff1a; 1.5 安全机制 X.800标准定义了一系列的安全机制&#xff0c;这些机制主要可分为两大类&#xff1a; 特定的安全机制&#xff1a;这些机制特定于某一协议层&#xff0c;例如TCP或应用层协议。普遍的安全机制&#xff1a;这些机制并不限制于任何特定的协议…

工行广州分行及Visa公司助力 华南理工大学启动科学健身“师生健康”嘉年华活动

千人同练瑜伽&#xff0c;伸展形体&#xff0c;拥抱美好自然&#xff1b; KPOP风格与华语流行音乐激情碰撞&#xff0c;人们在健身街舞课程中燃烧卡路里&#xff1b; 节拍强劲有力&#xff0c;人人跳起搏击操&#xff0c;尽情释放自我&#xff0c;争做夜空最闪耀的那颗星…… 1…

Spring 事务不生效的几种场景

Spring 事务不生效的几种场景 详细内容参考以下链接&#xff0c;这个链接是原文&#xff1a; spring 事务不生效的15中场景 非原创。 以下内容只是为了学习&#xff0c;加深印象&#xff0c;仅作为个人学习笔记&#xff0c; 请支持原创&#xff0c;内容请点击 spring 事务不生效…

手机桌面待办事项APP推荐,手机上可使用哪些待办事项APP

生活中&#xff0c;无论你是一名专业人士&#xff0c;学生&#xff0c;还是家庭主妇&#xff0c;总有各种各样的任务等待着你&#xff0c;有时候需要额外的工具来提醒和管理这些待办事项。手机上的待办事项APP软件成为了这个任务的好帮手&#xff0c;为我们提供了快速、方便的方…

STM32的bootloader程序(通过串口更新STM32应用程序)

1 什么是bootloader&#xff1f; Bootloader&#xff0c;也被称为引导加载程序&#xff0c;是操作系统启动过程中的一个重要组成部分。它是存储在非易失性存储器中的一段小程序&#xff0c;负责在操作系统内核运行之前加载并启动一些必要的系统组件。 当计算机开机后&#xff0…

C++设计模式_19_Memento 备忘录(理解,目前多使用序列化方案来实现)

Memento 备忘录模式也属于“状态变化”模式&#xff0c;它是一个小模式&#xff0c;在今天来看有些过时&#xff0c;当今已经很少使用当前模式实现需求&#xff0c;思想却不变&#xff08;信息隐藏&#xff09;&#xff0c;目前多使用序列化方案来实现。本系列所介绍的模式&…

资深8年测试总结,接口测试常用测试点汇总(精辟详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试是测试系…

【VPX630】青翼 基于KU115 FPGA+C6678 DSP的6U VPX通用超宽带实时信号处理平台

板卡概述 VPX630是一款基于6U VPX总线架构的高速信号处理平台&#xff0c;该平台采用一片Xilinx的Kintex UltraScale系列FPGA&#xff08;XCKU115&#xff09;作为主处理器&#xff0c;完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM内核的高性能嵌入式处理器…

当面试问你接口测试时,不要再说不会了

很多人会谈论接口测试。到底什么是接口测试&#xff1f;如何进行接口测试&#xff1f;这篇文章会帮到你。 前端和后端 在谈论接口测试之前&#xff0c;让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面&#xff0c;它由 HTML 和 CSS 编写而成…

Unity DOTS系列之Struct Change核心机制分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制&#xff0c;方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchTypeChunk的Entity管理模式。每个Entity不直接存放数据&#xff0c…

css矩形盒子实现虚线流动边框+css实现step连接箭头

由于项目里需要手写步骤条 且实现指定状态边框虚线流动效果&#xff0c;故使用css去绘制步骤条连接箭头和绘制边框流动效果 效果&#xff1a; 1.绘制步骤条连接箭头 <ul class"process-list"><div v-for"(process, index) in processes" :key&qu…