【小程序开发】小程序的架构和配置

这篇具有很好参考价值的文章主要介绍了【小程序开发】小程序的架构和配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【小程序开发】小程序的架构和配置

写在前面

🤗这里是前端程序员小张!

🌻人海茫茫,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

🌟愿你在未来的日子,保持热爱,奔赴山海!

一、小程序的架构模型

  • 小程序的宿主环境为微信客户端
    • 宿主环境执行小程序的各种文件:wxml文件、wxss文件、js文件
  • 当小程序基于 WebView 环境下时,WebView 的 JS 逻辑、DOM 树创建、CSS 解析、样式计算、Layout、Paint (Composite) 都发生 在同一线程,在 WebView 上执行过多的 JS 逻辑可能阻塞渲染,导致界面卡顿。
  • 以此为前提,小程序同时考虑了性能与安全,采用了目前称为「双线程模型」的架构。
  • 双线程模型:
    • WXML模块和WXSS样式运行于渲染层,渲染层使用 WebView线程渲染(一个程序有多个页面,会使用多个 WebView的线程)。
    • JS脚本(app.js/home.js等)运行于逻辑层,逻辑层使用JsCore运行JS脚本。
    • 这两个线程都会经由微信客户端(Native)进行中转交互

【小程序开发】小程序的架构和配置

二、小程序代码构成

默认创建的项目里生成了不同类型的文件:

  • .json后缀的 JSON 配置文件
  • .wxml 后缀的 WXML 模板文件
  • .wxss 后缀的 WXSS 样式文件
  • .js 后缀的 JS 脚本逻辑文件

2.1 JSON配置

JSON 是一种数据格式,并不是编程语言,在小程序中,JSON扮演的静态配置的角色。

  • 小程序配置 app.json
    • app.json 是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。
  • 页面配置 page.json
    • 独立定义每个页面的一些属性,例如顶部颜色、是否允许下拉刷新等等。
  • 工具配置 project.config.json
    • 项目配置文件, 比如项目名称、appid等;

2.2 其他

网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互,在小程序中

  • WXML 充当的就是类似 HTML 的角色
  • WXSS具有CSS大部分的特性
  • 通过编写 JS 脚本文件来处理用户的操作

三、配置文件

3.1 全局配置文件

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置

属性 类型 必填 描述
pages string[] 页面路径列表
window Object 全局的默认窗口表现
tabBar Object 底部 tab 栏的表现
  • pages:页面路径列表
    • 用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径(含文件名) 信息
    • 小程序中所有的页面都是必须在pages中进行注册的
  • window:全局的默认窗口展示
    • 用户指定窗口如何展示,用于设置小程序的状态栏、导航条、标题、窗口背景色。
  • tabBar:底部tab栏的表现
    • 如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面

完整请参考官方文档:全局配置 | 微信开放文档 (qq.com)

3.2 页面配置文件

每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置

  • 页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项
属性 类型 默认值 描述 最低版本
navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如 #000000
navigationBarTextStyle string white 导航栏标题颜色,仅支持 black / white
navigationBarTitleText string 导航栏标题文字内容
navigationStyle string default 导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航栏,只保留右上角胶囊按钮。 iOS/Android 微信客户端 7.0.0,Windows 微信客户端不支持
homeButton boolean false 在非首页、非页面栈最底层页面或非tabbar内页面中的导航栏展示home键 微信客户端 8.0.24
backgroundColor HexColor #ffffff 窗口的背景色
backgroundTextStyle string dark 下拉 loading 的样式,仅支持 dark / light

四、注册App实例

每个小程序都需要在 app.js 中调用 App 函数 注册小程序示例

  • 在注册时, 可以绑定对应的生命周期函数
  • 在生命周期函数中, 执行对应的代码

4.1 App函数的参数

属性 类型 默认值 必填 说明
onLaunch function 生命周期回调——监听小程序初始化。
onShow function 生命周期回调——监听小程序启动或切前台。
onHide function 生命周期回调——监听小程序切后台。
onError function 错误监听函数。
onPageNotFound function 页面不存在监听函数。
onUnhandledRejection function 未处理的 Promise 拒绝事件监听函数。
onThemeChange function 监听系统主题变化
其他 any 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

注册App时,我们一般会进行的操作是什么?

  1. 判断小程序的进入场景
  2. 监听生命周期函数,在生命周期中执行对应的业务逻辑,比如在某个生命周期函数中进行登录操作或者请求网络数据;
  3. 因为App()实例只有一个,并且是全局共享的(单例对象),所以我们可以将一些共享数据放在这里;

4.2 判断打开的场景

小程序的打开场景较多

  • 常见的打开场景:群聊会话中打开、小程序列表中打开、微信扫一扫打开、另一个小程序打开

如何确定打开的场景?

  • onLaunchonShow生命周期回调函数中,会有options参数,其中有scene值

【小程序开发】小程序的架构和配置

4.3 定义全局App的数据

可以在Object中定义全局App的数据,定义的数据可以在其他任何页面中访问

globalData: {
    token: "",
    userInfo: {}
}

五、注册Page实例

小程序中的每个页面, 都有一个对应的js文件, 其中调用Page函数注册页面示例

  • 在注册时, 可以绑定初始化数据、生命周期回调、事件处理函数等

5.1 Page函数的参数

属性 类型 默认值 必填 说明
data Object 页面的初始数据
options Object 页面的组件选项,同 Component 构造器 中的 options ,需要基础库版本 2.10.1
behaviors String Array 类似于mixins和traits的组件间代码复用机制,参见 behaviors,需要基础库版本 2.9.2
onLoad function 生命周期回调—监听页面加载
onShow function 生命周期回调—监听页面显示
onReady function 生命周期回调—监听页面初次渲染完成
onHide function 生命周期回调—监听页面隐藏
onUnload function 生命周期回调—监听页面卸载
onRouteDone function 生命周期回调—监听路由动画完成
onPullDownRefresh function 监听用户下拉动作
onReachBottom function 页面上拉触底事件的处理函数
onShareAppMessage function 用户点击右上角转发
onShareTimeline function 用户点击右上角转发到朋友圈
onAddToFavorites function 用户点击右上角收藏
onPageScroll function 页面滚动触发事件的处理函数
onResize function 页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTap function 当前是 tab 页时,点击 tab 时触发
onSaveExitState function 页面销毁前保留状态回调
其他 any 开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问。这部分属性会在页面实例创建时进行一次深拷贝

页面的生命周期函数
【小程序开发】小程序的架构和配置文章来源地址https://www.toymoban.com/news/detail-489472.html

到了这里,关于【小程序开发】小程序的架构和配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序开发】微信小程序集成腾讯位置项目配置

    腾讯位置服务官网 当然没账号的要先注册一个账号 在我的应用里创建一个新的应用,印象中需要小程序ID,去微信开发者工具里面找到自己的小程序ID填入即可 添加 key 中勾选勾选 WebServiceAPI 从官网里下载,我这里下载的是 v1.2 打开微信开发者工具 在查找小程序ID的地方下滑

    2024年02月02日
    浏览(57)
  • 微信小程序开发系列(六)·小程序配置文件详细介绍·项目配置文件和配置Sass以及sitemap.json文件

    微信小程序开发_时光の尘的博客-CSDN博客 目录 1.  项目配置文件和配置Sass 2.  sitemap.json文件         在创建项目的时候,每个项目的根目录生成两个config.json文件,用于保存开发者在工具上做的个性化配置,例如和编译有关的配置。         当重新安装微信开发者工

    2024年03月12日
    浏览(45)
  • 微信小程序 | 小程序开发

    🖥️ 微信小程序专栏:小程序开发 初级知识 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力❤️ 目录 一、认识小程序开发 什么是小程序? 各个平台小

    2024年01月24日
    浏览(61)
  • 微信小程序开发 | 音乐小程序项目

    2023年04月20日
    浏览(41)
  • python做微信小程序开发,python怎么开发小程序

    大家好,小编来为大家解答以下问题,python做微信小程序开发,python怎么开发小程序,今天让我们一起来看看吧! 大家好,小编为大家解答用python编写一个小程序的问题。很多人还不知道如何用python做小软件,现在让我们一起来看看吧! 大家好,小编来为大家解答以下问题

    2024年03月12日
    浏览(63)
  • 抖音小程序开发教学系列(4)- 抖音小程序组件开发

    在本章中,我们将深入探讨抖音小程序的组件开发。组件是抖音小程序中的基本构建块,它们负责展示数据和与用户交互。了解组件的开发方法和使用技巧是进行抖音小程序开发的重要一步。 抖音小程序提供了许多常用的基本组件,它们分别具有不同的功能和用途。在我们的

    2024年02月09日
    浏览(51)
  • 微信小程序开发15 项目实战 基于云开发开发一个在线商城小程序

    在学完前 4 个模块之后,我相信你会对微信小程序的开发有一个全新的认识。在前面 3 个模块中,俊鹏分别从微信小程序内在的运行原理,小程序工程化开发以及具体实践层面,深度讲解了微信小程序开发所必要的知识和能力。而第 4 个模块里,我带你认识了微信小程序的云

    2024年02月11日
    浏览(50)
  • 微信小程序开发教程(二)--上传小程序

    接上文,我们已经有一个小例子了。 在模拟器的位置,点击头像,会登录。 此时我们可以第一次尝试将我们的小程序进行上传。 点击下图箭头所指位置: 点击确定: 填写版本号和备注信息,选择上传: 在网页管理小程序上,选择上传,以下都选择红框所在位置: 填写相关

    2023年04月25日
    浏览(40)
  • 企业小程序开发步骤【教你创建小程序】

    随着移动互联网的兴起,微信已经成为了很多企业和商家必备的平台,而其中,微信小程序是一个非常重要的工具。本文将为大家介绍小程序开发步骤,教你创建小程序。 步骤一、注册小程序账号 先准备一个小程序账号,在微信公众平台的网站上注册即可。注册时要注意,

    2024年02月11日
    浏览(38)
  • 微信小程序 -- 小程序开发能力与拓展

    1. 获取用户头像 当小程序需要让用户完善个人资料时,我们可以通过微信提供的头像、昵称填写能力快速完善。如图: 想使用微信提供的头像填写能力,需要两步: 将 button 组件 open-type 的值设置为 chooseAvatar 当用户选择需要使用的头像之后,可以通过 bindchooseavatar 事件回调

    2024年04月15日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包