Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

taixw2/rmini

Repository files navigation

一个简单的微信小程序运行时

项目要求/支持

  • xcode
  • 目前仅支持 iOS

项目结构

  • miniprogram-project
    • 微信开发工具创建的小程序项目
  • packages/compiler
    • 编译相关,负责将小程序源文件编译成可运行的模块 (JSCore)
  • packages/runtime
    • 基础组件 + vue 渲染模块 (Webview)
  • packages/swift
    • 原生代码块 (Native)

快速启动

1. 在根目录安装依赖(时间会比较久)

# 安装 JS 依赖
yarn

2. 进入 packages/Swift 安装 Native 依赖:

cd packages/Swift
# 安装 swift 依赖
# 如果没有安装 cocospod 需要先安装
pod install

3. 将编译命令行工具 link 到全局

cd packages/compiler
yarn link # or npm link 注册 rmini命令行工具

4. 编译小程序项目

cd miniprogram-project
# 编译项目
rmini 
# 如果不使用 rmini, 则: node ../packages/compiler/cli/index.js
# 获取到编译后的源文件

5. 将编译后的文件放在服务器中,用于在 Native 中下载

# 为了简单起见,直接在本地起一个服务器
serve /var/folder/xxx/xxx/wxc8ecefecf650b4ff/../

6. 启动 App

  1. 进入 packages/Swift 项目
  2. 打开 MiniprogramExample.xcworkspace 文件
  3. 运行 App 修改服务器地址以及 Appid, 或修改 ContentView 中的服务器以及 Appid

流程简介

这是一张从小程序官方薅来的图

  1. 小程序启动后,通过 JSCore 运行脚本,并且注入 bridge (CoreModule/MiniprogramController.swift:39)
  2. 初始化一个 Webview, 并调用 JSCore 中的 init, 运行 onLaunch 生命周期
  3. JSCore 中 init 后,将首页返回给原生
  4. 原生根据首页路径找出对应的 HTML 文件,并用 Webview 渲染
  5. 加载 HTML 前调用 onLoad 生命周期
  6. 将 HTML 文件加载后调用 onReady 生命周期
  7. 原生的 ViewController 调用 viewDidAppear 生命周期时调用 onShow
  8. 原生的 ViewController 调用 viewDidDisappear 生命周期时调用 onHide
  9. 页面退出后调用 onUnload 生命周期

效果图

效果图

About

A simple miniprogram runtime

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /