小程序入门到实战(二)-----基础知识部分1.0

一、小程序的生命周期

要了解如何开发一个小程序,首先需要了解小程序的生命周期,因为生命周期的概念将贯穿

小程序开发的始终。

生命周期:是指一个程序从启动到关闭这一过程中产生的一系列事件的总和。

实际上包括组件生命周期和页面生命周期两个部分。一个微信小程序启动后首次加载页面,会触发页面的 onLoad 事件(这个事件只有在页面首次加载时才会触发);当这个页面显示的时候会触发 onShow 事件,如果这个页面是首次渲染完成,则会接着触发 onReady 事件。如果我们将小程序切换到后台,页面就会被隐藏同时触发onHide 事件;下次从后台切换到前台时,则会再次触发 onShow 事件。最后,当页面被回收销毁时,会触发 onUnload 事件。

二、小程序的架构

小程序采用混合模式开发,称为Hybrid 方式。小程序的界面主要由成熟的 Web 技术渲染,再将客户端原生能力封装成接口供开发者调用,并通过双线程模型分离界面渲染和逻辑处理,提高小程序的渲染性能和管控安全。

为了满足上述设计理念,小程序开发团队设计了一套双线程模型,架构主要分为 3 层:逻辑

层(JSCore)、渲染层(WebView)和系统层(Native)。

1.逻辑层(JSCore)

逻辑层主要负责将数据进行处理后再发送给渲染层,同时接收渲染层的事件反馈,对数据进

行反向操作。对微信小程序来说,逻辑层就是所有 js 文件的集合。

逻辑层主要进行数据请求和业务逻辑处理,通过 JS 引擎提供的沙箱环境来执行 JS。与浏览

器 Web 开发相比,逻辑层开发无法直接操作 DOM 和 BOM,无法使用一些浏览器暴露的接口(如

跳转页面、动态执行脚本),从而提高了管控力和安全性。

2.渲染层(WebView)

渲染层主要在 WebView 线程中执行界面渲染相关的任务,对于微信小程序而言,渲染层就

是所有 WXML(WeiXin Mark Language)文件与 WXSS(WeiXin Style Sheet)文件的集合。

3.系统层(Native)

系统层的主要作用有 3 个:

  • 通过 JSBridge 构建 JS 和 Native 之间的通信,以便上层间接调用客户端的原生底层接口;
  • 提供网络请求、数据缓存、本地文件、媒体等基础能力;
  • 为逻辑层与渲染层的通信做中转。

在双线程模型下,把界面渲染和逻辑处理分离、并行处理 ,可以加快渲染速度,避免单线程模型下因为 JS 运算时间过长导致的 UI 卡顿问题。并且,采用数据驱动的方式,开发者将无法直接操作 DOM,可以加强管控和安全。但是,双线程模型也意味着逻辑层与渲染层之间的通信、各层与客户端的原生交互会有一定的延时。

三、小程序的开发框架

小程序开发使用的框架称为 MINA 框架。

它封装了微信客户端提供的文件系统、网络通信等基础功能,并经过大量底层优化,使得小程序的运行速度几乎接近原生 App。该框架在 Android 和 iOS 平台上呈现高度一致的效果,并配备了完善的开发和调试工具。MINA 框架的核心目标是通过简化的方式,向开发者提供一整套统一的 JavaScript API,使得开发者能够更容易地使用微信客户端的各种功能,从而快速构建出接近原生 App 体验的小程序应用。

前面提到的小程序的 三层架构,其实就是 MINA 框架的核心组成部分。这三层架构互相配合,缺一不可。具体来说:

  • 逻辑层 主要由 JavaScript 代码来实现。
  • 渲染层 主要由微信提供的 WXML(结构)和 WXSS(样式)来完成。

在小程序中,逻辑层渲染层 之间通过 数据双向绑定 实现了数据的同步:当逻辑层的数据发生变化时,渲染层会自动更新;同样,当渲染层的数据发生变化时,逻辑层的数据也会随之更新。这个双向绑定机制让开发者无需手动操作 DOM 元素,可以更方便、更快速地更新页面内容,从而提高开发效率。这个机制是小程序框架设计的核心之一。

四、小程序的逻辑层开发

在小程序中,逻辑层 主要负责处理业务逻辑。

对于开发者而言,小程序的逻辑层就是所有 JavaScript 脚本文件的集合。虽然小程序的逻辑层使用的是 JavaScript 语言,但它与我们在 Web 开发中常用的 JavaScript 有一些区别。首先,小程序在标准 JavaScript 的基础上,扩展了一些新的 API ,以提升开发效率并增强小程序的功能。其次,由于小程序并不运行在浏览器环境中 ,它无法使用documentwindow 这类在 Web 开发中常见的 JavaScript 功能和对象。因此,小程序的 JavaScript 环境和传统 Web 开发有所不同。

(一)小程序文件结构

├ app.wxss
├ app.json
├ project.config.json
├ pages
│   ├--- index
│   │     ├-- index.js
│   │     ├-- index.json
│   │     ├-- index.wxml
│   │     └-- index.wxss
└- app.js
相关推荐
前端(从入门到入土)1 小时前
微信小程序自定义顶部导航栏(适配各种机型)
微信小程序·小程序
qq_332783546 小时前
wx小程序turf.js判断点是否位于该多边形内部
小程序
放逐者-保持本心,方可放逐7 小时前
微信小程序=》基础=》常见问题=》性能总结
前端·微信小程序·小程序·前端框架
计算机-秋大田7 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
钰@10 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
尚学教辅学习资料11 小时前
基于微信小程序的电商平台+LW示例参考
java·微信小程序·小程序·毕业设计·springboot·电商平台
尘浮生11 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
小泽呀x13 小时前
微信小程序中使用离线版阿里云矢量图标
微信小程序·小程序
fakaifa13 小时前
CRMEB Pro版v3.1源码全开源+PC端+Uniapp前端+搭建教程
前端·小程序·uni-app·php·源码下载