微信小程序的架构原理

小程序上线以来,一向被称为“便携版”的APP,关于两者之间的区别,无外乎小程序相对轻便、开发成本低,下面让我们来看一下小程序的“庐山真面目”!

一、app的分类

大致可以分为这3种:

native app(原生app)、web app、hybrid app(混合app),关系如下图:

二、什么是小程序

小程序是介于web网页应用和原生应用的一种产物;

小程序的特点:

三、小程序架构

视图层和逻辑层分离,通过数据驱动,事件交互,不直接操作DOM

视图层负责渲染页面结构,逻辑层负责逻辑处理、数据请求、接口调用等

视图层与逻辑层通过数据和事件进行通信,逻辑层提供数据给视图层,视图层通过绑定/捕获事件发起交互让逻辑层处理

视图使用WebView渲染,JS由JSCore(IOS)/X5(Android)/nmjs(DevTool)渲染解析

JSBridge下架起上层开发与Native(系统层)的桥梁,使得小程序可通过API使用原生的功能,且部分组件为原生组件实现,从而有良好体验。实现了对底层API接口的调用,所以在小程序里面开发,开发者不用太多去考虑OS的实现差异的问题,安心在上层的视图层和逻辑层进行开发即可。

数据通信机制:

分为数据单项绑定、事件绑定。

四、小程序项目结构

约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

五、小程序生命周期

小程序的生命周期分为应用生命周期和页面生命周期

应用生命周期:

属性 类型 描述 触发时机
onLaunch Function 生命周期函数–监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
onShow Function 生命周期函数–监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow
onHide Function 生命周期函数–监听小程序隐藏 当小程序从前台进入后台,会触发 onHide

页面生命周期:

Page()函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

### 微信小程序的架构设计与组成结构 微信小程序的架构是一种结合了BS(Browser-Server)和CS(Client-Server)架构特点的混合架构[^1]。这种架构使得小程序既能够像Web应用一样方便快捷地进行开发和部署,又具备客户端应用的高性能和丰富的用户体验。 #### 1. 架构图概述 微信小程序的架构可以分为两大部分:**逻辑层**和**视图层**。这两部分通过微信客户端提供的通信接口进行交互[^2]。以下是两层的基本功能描述: - **逻辑层**:负责处理业务逻辑、数据请求以及与服务器的通信。开发者使用JavaScript编写代码,并通过微信提供的API实现这些功能。 - **视图层**:负责界面展示,开发者使用WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets)来定义页面结构和样式。 #### 2. 组件构成 微信小程序的核心组件包括以下几类: - **页面组件**:如`<view>`、`<text>`、`<image>`等,用于构建页面的基本结构。 - **表单组件**:如`<input>`、`<button>`、`<checkbox>`等,用于实现用户交互功能。 - **媒体组件**:如`<audio>`、`<video>`、`<camera>`等,支持多媒体内容的展示和操作。 - **导航组件**:如`<navigator>`,用于在不同页面之间进行跳转。 - **自定义组件**:开发者可以通过封装复用的组件来提高开发效率[^2]。 #### 3. 设计模式 微信小程序的设计模式借鉴了React和Vue等前端框架的理念,采用了组件化的开发方式。每个页面由一个独立的文件组合而成,包括: - `.wxml` 文件:定义页面的结构。 - `.wxss` 文件:定义页面的样式。 - `.js` 文件:定义页面的逻辑。 - `.json` 文件:定义页面的配置信息。 此外,微信小程序还支持事件绑定、数据绑定以及条件渲染等功能,这使得开发者能够更加高效地构建复杂的用户界面[^2]。 #### 4. 技术原理 关于微信小程序的技术实现,有一种观点认为其与React Native(RN)类似,可能在服务端打包成native语言。然而,经过测试发现,微信小程序的内容并非原生native,而是通过WebView容器运行的轻量级应用[^3]。这意味着,微信小程序的运行环境是由微信客户端提供的虚拟机,而非直接依赖于操作系统的原生组件。 ```python # 示例代码:简单的微信小程序逻辑层代码 Page({ data: { message: "Hello, Mini Program!" }, onLoad() { console.log("Page loaded"); } }); ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值