上面的链接就是微信小程序开发的文档链接
小程序的独特性
在官网的介绍中从这几个维度进行了小程序的核心讲解:
1. 小程序和pc浏览器的web前端开发之间的区别
2. 小程序和webviewclient注入类型的开发的区别
3. 小程序自身的一些特性
从这三个维度来进行的讲解吧
小程序本身而言的话实际上和 hybrid 的跨端开发方式是极其类似的,原理是相通的讷
只是微信/百度/抖音等这些平台提供了统一的 JSBridge 调度的原生端的 API 而已
理解什么是线程,这是小程序架构和浏览器架构下的不同点?
伴随的问题就是:
在nodejs开发的时候为什么一些长任务开启子进程child_children来进行实际操作
在原生端开发的时候,为什么会开启一个子线程来操作UI xml
理解v8引擎,以及浏览器的进程模型?
理解什么是渲染层,什么是逻辑层?
探究不同浏览器内核的区别?
理解什么是SDK?
核心思考小程序开发和普通网页开发的区别是什么??
理解一下 hybird 架构是什么!
小程序代码构成
核心是分为了四块:json 配置层,js逻辑层,wxml的html骨架层,wxss的css样式层
比如说后续的 taro 或者说 uniapp 底层的逻辑是怎样的不同,都是会想办法编译为上诉的四个文件类型的基本结构呢,从而让微信小程序可直接在微信平台进行加载和运行
小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发
这是官方的一句话的描述,以及前面的描述实际上和android开发是很类型的,android原生开发,当需要进行操作不同的页面的时候就需要进行切换线程,保证操作的准确性吧
小程序 VS Android/Hybird
架构模型
小程序的架构模型
小程序是采取的是「双线程 + 多webview实例」架构
逻辑层:一个独立的JS线程(JSCore/V8引擎),负责的是业务逻辑和数据处理相关的操作吧,不会直接的操作DOM
渲染层:每个页面对应一个独立的 webview 实例(线程),负责的是页面的渲染,逻辑层通过「数据通信桥」向渲染层传递数据,渲染层仅做被动的数据渲染
页面在进行切换的时候,小程序做的是「隐藏/显示」对应的 webview,并没有进行销毁,切换的本质是「渲染线程的激活/挂起」
android + hybird 架构模型
原生 android 是 「单应用主线程(UI线程) + 多子线程」的架构模型吧,Hybird 就是在原生页面中嵌入了一层 webview 而已(一般基于 chromium 内核来做的呢)
原生页面:运行在android主线程的(UI 线程),所有的UI操作必须在住线程中执行讷
Hybird 页面:一个 webview 对应一个独立的 「webview进程/线程」(可以通过配置实现),webview 内部的 JS 执行和 DOM 的渲染在自身线程,和原生主线程通过
addJavascriptInterface/shouldOverrideUrlLoading来实现通信吧
小程序 skyline 引擎
一、Skyline 引擎的核心定位
首先明确:Skyline 不是对传统小程序双线程模型的推翻,而是对渲染层的重构 + 线程模型的优化,核心目标是:
解决传统 WebView 渲染的性能损耗(如 DOM 解析、样式计算耗时);
缩小小程序与原生 App(Android/iOS)的体验差距;
兼容原有小程序开发语法(无需大规模改代码)。
它的定位类似于「小程序版的 React Native」—— 用更接近原生的渲染方式替代 WebView 渲染,但保留小程序的逻辑层设计。
二、Skyline 引擎的底层原理(核心突破)
1. 先对比传统小程序引擎的痛点
传统小程序渲染层依赖 WebView:
逻辑层(JS 线程)→ 通信桥 → WebView 渲染层 → 解析 WXML/WXSS → 生成 DOM → 绘制到屏幕;
中间环节多(DOM 解析 / 布局计算),且 WebView 本身是「浏览器内核子集」,性能远低于原生渲染。
2. Skyline 引擎的核心架构
Skyline 重构了「渲染层」,核心是「抛弃 WebView 内核,改用原生渲染管线」,整体架构如下:
逻辑层(原有 JS 线程) → 通信桥 → Skyline 渲染层 → 原生渲染组件 → 屏幕渲染层核心:不再基于 WebView,而是自研的「原生渲染引擎」(Android 端基于 Skia 图形库,iOS 端基于 CoreGraphics);
模板编译:WXML/WXSS 编译时直接转换为「原生渲染指令」(而非 DOM 节点),避免 DOM 解析损耗;
线程模型优化:
保留「逻辑层单线程」(兼容原有代码);
渲染层拆分为「布局线程 + 绘制线程」:布局计算(如 flex 布局)在独立线程执行,绘制(像素渲染)在 GPU 线程执行,避免主线程阻塞;
页面切换时,仅切换「原生渲染组件树」的激活状态,而非 WebView 实例,切换耗时从「毫秒级」降到「微秒级」。
3. 关键技术特性
原生组件直通:Skyline 中
<view><button>等组件不再是 WebView 中的「伪原生组件」,而是直接映射为 Android/iOS 的原生 View 组件,点击、滑动等事件无 WebView 桥接损耗;离屏渲染:复杂动画(如弹窗、轮播)在离屏缓冲区渲染后再合成到主屏幕,避免重绘导致的卡顿;
按需更新:仅更新数据变化的组件节点(而非整个页面),类似 React 的虚拟 DOM 差分更新,但基于原生组件树实现,效率更高;
GPU 加速:所有渲染操作优先使用 GPU 计算,替代传统 WebView 的 CPU 软渲染。
三、Skyline 引擎 vs 传统引擎 vs Android Hybrid
关于小程序的讲解就到这里了吧!还有很多很多,但是其他的就是纯 API 的调度和使用了吧