Chapter 01

概述与开发环境搭建

了解微信小程序的架构演进、Skyline 与 WebView 双引擎体系,配置开发环境并运行第一个小程序

1.1 微信小程序是什么

微信小程序(WeChat Mini Program)是腾讯微信团队于 2017 年 1 月正式上线的轻量化应用平台。与传统 App 不同,小程序运行在微信客户端内部,用户无需下载安装即可使用,用完即走。截至 2025 年,全平台已有超过 400 万个小程序,日活用户突破 5 亿。

ℹ️
定义:小程序(Mini Program)

一种不需要下载安装即可使用的应用,它实现了应用「触手可及」的梦想,用户扫码或搜索即可打开,也体现了「用完即走」的理念。小程序运行在宿主平台(微信)的沙盒环境中,可以调用宿主提供的原生能力。

小程序 vs 传统 App vs H5

维度原生 AppH5 网页微信小程序
安装成本需下载安装(MB-GB)无需安装无需安装,首次加载约 1-2 MB
用户体验最佳,原生渲染较差,受浏览器限制良好,Skyline 接近原生
原生能力完全访问设备 API受限,安全沙盒微信授权的 API 集合
开发成本高,iOS/Android 双端低,跨平台中,一套代码多端运行
发现渠道应用商店搜索引擎 / 链接微信搜索 / 二维码 / 分享
商业化应用内购 / 广告广告 / 订阅微信支付 / 广告 / 订阅消息

1.2 小程序架构演进

理解小程序的架构有助于写出更高性能的代码。微信小程序从诞生到现在经历了三个重要阶段:

第一代:双线程架构(2017 年)

最初的小程序采用双线程架构——逻辑层(AppService)渲染层(WebView)分别运行在独立线程,通过 Native Bridge 通信。这一设计解决了 Web 应用中 JS 执行阻塞页面渲染的问题,但也引入了线程通信的序列化开销。

AppService
逻辑层线程,运行 JavaScript 代码(Page、Component 的逻辑),使用 JSCore 引擎(iOS)或 V8(Android/DevTools),没有 DOM/BOM API
WebView
渲染层线程,负责将 WXML+WXSS 渲染为界面,每个页面一个独立 WebView 实例,最多同时保留 10 个页面
Native Bridge
原生通信桥,负责在 AppService 和 WebView 之间传递消息,数据需要 JSON 序列化/反序列化,是性能瓶颈之一
WXS
运行在渲染层的脚本模块(WebView Script),可以直接操作视图层数据,避免频繁跨线程通信,适合做交互动画

第二代:Skyline 渲染引擎(2022 年起,2024 年稳定)

Skyline 是微信全新的渲染引擎,抛弃了 WebView,改用自研渲染管线,实现了更接近原生 App 的性能体验。2024 年随基础库 3.x 全面稳定,成为新项目推荐引擎。

Skyline 的核心优势

同层渲染:原生组件(camera、map、video)与 WXML 组件位于同一渲染层,解决了 WebView 时代原生组件层级问题;worklet 动画:动画代码直接运行在渲染线程,无需跨线程通信,帧率媲美原生动画;手势系统:声明式手势竞争机制,轻松实现复杂手势联动。

1.3 Skyline vs WebView 详细对比

特性WebView 模式Skyline 模式
渲染引擎系统 WebView(WKWebView/X5)微信自研渲染管线
JS 运行时JavascriptCore / V8JavascriptCore / V8(同)
原生组件层级原生组件总在最顶层同层渲染,与普通组件同级
动画性能依赖 CSS Animation / WXSworklet 动画(渲染线程直接执行)
手势系统无原生手势竞争声明式手势,支持竞争/协作
共享元素动画不支持原生支持(shared-element)
CSS 支持WebView CSS 全集部分 CSS,含新增 Skyline 专属
启动速度每页一个 WebView,初始化较慢单线程渲染,启动更快
兼容性全版本兼容基础库 2.30.4 以上(需配置)
⚠️
切换引擎注意

Skyline 模式下部分 WebView 特有的 CSS 属性不支持(如 position: fixed 的某些场景、::before/::after 伪元素),迁移前需仔细检查兼容性列表。新项目建议直接使用 Skyline,老项目迁移需要逐页测试。

1.4 微信开发者工具安装与配置

微信开发者工具(WeChat DevTools)是小程序官方 IDE,基于 Electron 构建,集成了代码编辑器、模拟器、调试器和云开发控制台。

安装步骤

  1. 访问 微信公众平台(mp.weixin.qq.com),注册或登录小程序账号,获取 AppID
  2. 前往 开发 → 开发工具 下载页,选择 Stable 稳定版(当前 1.06.x),按操作系统下载 macOS / Windows 安装包
  3. 安装完成后,使用微信扫码登录开发者工具(需与小程序账号关联的微信号)
  4. 首次启动会提示更新基础库版本,选择 3.x 最新稳定版
  5. 在设置 → 通用 → 主题中可切换明暗主题

界面布局说明

工具栏(顶部)
编译、预览、上传代码、真机调试、清除缓存等快捷操作按钮
模拟器(左侧)
实时模拟手机界面,支持多种机型切换,可调整网络状态(WiFi/4G/离线)
编辑器(中间)
VS Code 内核,支持语法高亮、代码补全、格式化,内置 WXML/WXSS 专属提示
调试器(右侧)
Chrome DevTools 风格,包含 Console、Sources、Network、Storage、Sensor 等面板
云开发控制台
管理云数据库、云存储、云函数、云日志,支持在线编辑与部署云函数

1.5 创建第一个小程序项目

让我们从一个最小项目开始,理解小程序的基础文件结构。

新建项目

打开微信开发者工具,点击「+」新建项目,填写:

最简项目结构

├── app.js          # 小程序逻辑(App 注册、全局方法)
├── app.json        # 全局配置(路由、窗口样式)
├── app.wxss        # 全局样式
├── project.config.json  # 项目配置(工具设置、AppID)
├── sitemap.json    # 页面搜索配置
└── pages/          # 页面文件夹
    └── index/
        ├── index.js    # 页面逻辑
        ├── index.json  # 页面配置
        ├── index.wxml  # 页面模板
        └── index.wxss  # 页面样式

app.js — 小程序入口

// app.js — 每个小程序只有一个 App 实例
App({
  // 小程序初始化完成时触发(全局只触发一次)
  onLaunch(options) {
    console.log('小程序启动', options)
    // options.scene: 进入场景值(1001=发现栏,1011=扫码等)
  },

  // 小程序显示/切前台时触发
  onShow(options) {
    console.log('前台显示', options)
  },

  // 小程序隐藏/切后台时触发
  onHide() {
    console.log('切换后台')
  },

  // 全局共享数据(各页面可通过 getApp() 访问)
  globalData: {
    userInfo: null,
    isLoggedIn: false
  }
})

pages/index/index.wxml — 第一个页面

<!-- index.wxml -->
<view class="container">
  <view class="title">你好,微信小程序 🎉</view>

  <!-- 数据绑定:{{}} 语法 -->
  <view class="count">点击次数:{{count}}</view>

  <!-- bindtap 绑定点击事件 -->
  <button bindtap="addCount" type="primary">点我 +1</button>
</view>

pages/index/index.js — 页面逻辑

// index.js
Page({
  // 页面初始数据
  data: {
    count: 0
  },

  // 自定义事件处理函数
  addCount() {
    this.setData({
      count: this.data.count + 1
    })
  },

  // 生命周期:页面加载
  onLoad(options) {
    console.log('页面加载,参数:', options)
  }
})

pages/index/index.wxss — 页面样式

/* index.wxss */
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 80rpx 40rpx;
  min-height: 100vh;
  background: #f8f8f8;
}

.title {
  font-size: 44rpx;
  font-weight: 700;
  color: #1a1a2e;
  margin-bottom: 40rpx;
}

.count {
  font-size: 36rpx;
  color: #07c160;
  margin-bottom: 40rpx;
  font-weight: 600;
}

1.6 真机预览与调试

在开发者工具中点击顶部「预览」按钮,会生成一个二维码,用绑定了开发者权限的微信号扫码,即可在真机上实时预览小程序。

💡
真机调试 vs 模拟器

模拟器适合日常开发迭代,但对于涉及摄像头、蓝牙、NFC、微信支付等原生能力的功能,必须使用真机测试。真机与模拟器渲染结果也可能存在细微差异,发布前务必完整真机测试。

常用调试快捷键

macOS

  • Cmd+S — 保存并编译
  • Cmd+Shift+F — 全局搜索
  • Cmd+P — 快速打开文件
  • Cmd+/ — 注释/取消注释
  • Cmd+Shift+P — 命令面板

Windows

  • Ctrl+S — 保存并编译
  • Ctrl+Shift+F — 全局搜索
  • Ctrl+P — 快速打开文件
  • Ctrl+/ — 注释/取消注释
  • Ctrl+Shift+P — 命令面板

1.7 小程序账号体系

开发微信小程序涉及多个主体身份,理解它们的关系很重要:

小程序账号
在 mp.weixin.qq.com 注册,有独立的 AppID(如 wx1234567890abcdef)和 AppSecret,是小程序的身份标识
开发者
可以在公众平台后台添加多个开发者成员,每个成员用自己的微信号在 DevTools 中登录开发
体验版
上传代码后可设为体验版,最多 2000 名体验成员可扫码使用,不需要提交审核
测试号
无需注册直接获取临时 AppID,功能受限(不支持支付、某些 API),适合纯学习使用
⚠️
AppSecret 安全提醒

AppSecret 是小程序后端调用微信 API 的密钥,绝对不能写在前端代码中,只能存放在服务器端或云函数环境变量中。一旦泄露,立即在公众平台后台重置。