微信小程序 | 小程序配置和架构

简介: 微信小程序 | 小程序配置和架构

一、小程序的双线程模型

谁是小程序的宿主环境?  => 微信客户端


       宿主环境是为了执行小程序的各种文件:wxml文件 wxss文件 js文件


当小程序基于WebView环境下时 WebView的Js逻辑 DOM树创建 CSS解析 样式计算 Layout Paint(composite)都发生在同一线程,在WebView上执行过多的Js逻辑可能阻塞渲染 导致界面卡顿


以此为前提,小程序同时考虑了性能与安全,采用了目前称为「双线程模型」的架构。


双线程模型:


       WXML模块和WXSS样式运行于 渲染层,渲染层使用 WebView线程渲染(一个程序有多个页面,会使用多个 WebView的线程)。


       JS脚本(app/home.js等)运行于 逻辑层,逻辑层使 用JsCore运行JS脚本。


       这两个线程都会经由微信客户端(Native)进行中转交互。

20a32abd60d44a3aba7cfca26bd22cae.png

二、不同配置文件的区分

小程序的配置文件

小程序的很多 开发需求 被规定在了 配置文件


  • 这样做可以更有利于我们的开发效率
  • 可以保证开发出来的小程序的某些风格比较一致
  • 如 导航栏 顶部TabBar栏 以及 页面路由


常见的配置文件有哪些?


  • project.config.json => 项目配置文件
  • sitemap.json => 小程序搜索相关
  • app.json => 全局配置
  • page.json => 页面配置

三、全局配置文件app.json

全局app配置文件

完整的可查看官方文档 =>  打开开发文档 => 框架 => 全局配置

属性

类型

必填

描述

pages

String[]

页面路径列表

window

Object

全局的默认窗口表现

tabBar

Object

底部tab栏表现

  • pages: 页面路径列表
  • 指定小程序由哪些网页组成,每一项对应一个页面的路径(含文件名)信息
  • 小程序所有页面都必须在pages中注册
  • window:全局的默认窗口展示
  • 用户指定窗口怎样展示,包含很多其他属性
  • tabBar:底部tab栏展示
  • 案例:


在app.json中进行tabbar配置

5118dd7a92d243d2b6e4810ee0bc3ce5.png

JSON
  "tabBar": {
    "selectedColor": "#ff8189",
    "list": [
      {
        "text": "首页",
        "pagePath": "pages/index/index",
        "iconPath": "assets/tabbar/home.png",
        "selectedIconPath": "assets/tabbar/home_active.png"
      },
      {
        "text": "收藏",
        "pagePath": "pages/favor/favor",
        "iconPath": "assets/tabbar/category.png",
        "selectedIconPath": "assets/tabbar/category_active.png"
      },
      {
        "text": "订单",
        "pagePath": "pages/order/order",
        "iconPath": "assets/tabbar/cart.png",
        "selectedIconPath": "assets/tabbar/cart_active.png"
      },
      {
        "text": "我的",
        "pagePath": "pages/profile/profile",
        "iconPath": "assets/tabbar/profile.png",
        "selectedIconPath": "assets/tabbar/profile_active.png"
      }
    ]
  },

四、页面配置文件page.json

页面page配置文件

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


  • 页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项。

3922327f99e648628a93ebf4fbba75d2.png

enablePullDownRefresh 是否开启下拉刷新


onReachBottomDistance 距离底部还有多少距离 回调函数

0cb8212484d04dd489a39b19ef4d00ec.png    c984fbde403741858bd6548387925f9b.png

170c4a6dce36404fba5226e8d8cace02.png

五、注册App实例的操作

注册小程序 - App函数

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


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

18904410343d41a79365199718964695.png

注册App时,我们一般会做什么?


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

App函数中的参数

42a27d582a034517ac147fc3fbef3607.png

作用一:判断用户打开场景

小程序打开场景较多:


  • 常见打开场景:小程序列表中,群聊中,微信扫描等..
  • 可在开发文档中打开

989a9f3723ec4ca48a8b7f1b0ecd3252.png

如何确定场景:

  • 在onLaunch和onShow生命周期回调函数中,会有options参数,其中有scence值

a0b7c63f76134d53ab659fbc5f050c97.png

作用二:定义全局App的数据

可以在Object中定义全局App的数据

188903b54e6044ae8db41738460670a1.png

定义的数据可以在其他任何网页中进行访问:

c2af9ae429b2403d8e6dfa1687959373.png

作用三: 生命周期函数

在生命周期函数中,完成应用程序启动后的初始化操作

  • 登录操作
  • 读取本地数据(拿取token等..)
  • 请求整个应用程序所需要的数据

65c4c67c03424c82bb2972ff2111a369.png

六、注册Page实例的操作

注册页面 - Page函数

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


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

552fb585f5d149598ba0e0ab14bfcf07.png

注册一个Page页面时 一般需要做什么?


  • 生命周期函数中发送网络请求,从服务器获取数据
  • 初始化一些数据 方便被wxml展示
  • 监听wxml中的事件 绑定对应的事件函数
  • 其他监听等..(下拉刷新,上拉加载等..)

注册页面时 做什么?

c0a5db0e152d41a5b4e632da1c2122f7.png

Page页面的生命周期

ff085aa6573043fc9194acf516f6b7dd.png

上拉和下拉的监听

监听页面的下拉刷新和上拉加载更多:


步骤一:配置页面的json文件

74adb67f642e4b3ba9ff681065447a77.png

步骤二:代码中进行监听

8e13cc5305c346858c45e1b3e175c3a8.png

相关文章
|
5月前
|
人工智能 运维 安全
配置驱动的动态 Agent 架构网络:实现高效编排、动态更新与智能治理
本文所阐述的配置驱动智能 Agent 架构,其核心价值在于为 Agent 开发领域提供了一套通用的、可落地的标准化范式。
1439 81
|
9月前
|
小程序 前端开发
2025商业版拓展校园圈子论坛网络的创新解决方案:校园跑腿小程序系统架构
校园跑腿小程序系统是一款创新解决方案,旨在满足校园配送需求并拓展校友网络。跑腿员可接单配送,用户能实时跟踪订单并评价服务。系统包含用户、客服、物流、跑腿员及订单模块,功能完善。此外,小程序增设信息咨询发布、校园社区建设和活动组织等功能,助力校友互动、经验分享及感情联络,构建紧密的校友网络。
365 1
2025商业版拓展校园圈子论坛网络的创新解决方案:校园跑腿小程序系统架构
|
5月前
|
人工智能 安全 数据可视化
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
本文系统性地提出并阐述了一种配置驱动的独立运行时Agent架构,旨在解决当前低代码/平台化Agent方案在企业级落地时面临困难,为Agent开发领域提供了一套通用的、可落地的标准化范式。
472 18
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
|
11月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
5月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
5月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
7月前
|
小程序 安全 JavaScript
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
517 1
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
|
9月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1895 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
9月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
1082 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
11月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
761 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡

热门文章

最新文章