本文档为 AI Agent 提供项目学习资源的导航入口。
详细的技术文档位于 docs/learning/ 目录:
| 文档 | 描述 |
|---|---|
| mts-bts-architecture-patterns.md | MTS/BTS 双线程架构模式对比,包含 runOnMainThread/runOnBackground API 使用 |
| bts-mts-compatible-components.md | 编写 BTS/MTS 双兼容组件的最佳实践,main-thread:ref 类型陷阱 |
| mts-shared-module-pitfalls.md | with { runtime: 'shared' } 共享模块的实战踩坑记录 |
| 文档 | 描述 |
|---|---|
| ascii-art-rendering.md | MTS ASCII Art 渲染技术:字符宽度测量、自适应布局、60fps 动画 |
| lynx-flexbox-centering-pitfall.md | Flexbox 居中陷阱:flex: 1 vs height: '100%' |
| 文档 | 描述 |
|---|---|
| mts-touch-event-pitfalls.md | MainThread 触摸事件陷阱,特别是 MainThread.Touch.identifier 相关问题 |
| touch-event-coordinates.md | 触摸事件坐标系统:clientX/Y vs pageX/Y 的选择指南 |
| 文档 | 描述 |
|---|---|
| porting-browser-demo-to-lynx.md | 从浏览器 Demo 移植到 Lynx 的实战教训:布局、样式、动画适配 |
// 线程间通信
runOnMainThread(fn)() // BTS → MTS
runOnBackground(fn)() // MTS → BTS
// 共享模块
import { prepareWithSegments } from 'lynx-pretext' with { runtime: 'shared' }
// 主线程函数声明
function myMTSFunction(): void {
'main thread'
// ...
}- TDZ 问题:
'main thread'函数内访问闭包变量可能触发 "lexical variable is not initialized" - 空 view 高度: Lynx 中空
<view style={{ flex: 1 }} />高度为 0 - Touch identifier: MTS 中
touch.identifier可能不稳定,建议用 index 匹配 - Flexbox 居中:
flex: 1不能正确撑开高度,需用height: '100%'配合justifyContent: 'center' - 触摸坐标: Lynx 中做命中测试、绝对定位或跨全屏/非全屏兼容时优先用
pageX/pageY;若只做相对位移且手势期间不会滚动,clientX/clientY也可
详见各文档获取完整信息。