宿主环境的兼容
Taro框架基于React技术栈提供了跨端组件开发能力(https://taro-docs.jd.com/docs/component),一个Taro组件由以下文件组成:
-
index.config.ts:组件的编译配置(可选)
-
index.tsx:组件的逻辑与模板内容
-
index.module.scss:组件的样式(推荐CSS Modules方案)
文件说明
- index.tsx
组件主文件,包含:
-
使用
function Component() { ... }或class Component extends Component { ... }定义组件 -
JSX模板语法编写组件结构
-
通过export default导出组件
-
组件生命周期管理(使用Hooks或Class生命周期)
-
事件处理(遵循React合成事件规范)
- index.module.scss
组件样式文件:
-
支持Sass/Scss预处理
-
使用CSS Modules避免样式污染
-
通过
import styles from './index.module.scss'引入 -
使用className={styles.container}方式绑定样式
- index.config.ts(可选)
组件编译配置:
-
定义组件名称:
defineCustomComponent({ name: 'my-component' }) -
设置组件属性默认值
-
配置组件需要使用的原生小程序组件
-
跨端兼容配置
1. 核心入口模块
index.tsx 是整个库的入口文件,它导出了两个核心组件VChart和VChartSimple:
import { VChartSimple } from './simple'; import { VChart } from './vchart'; export * from './charts'; // 导出所有图表组件 export { VChart, VChartSimple }; // 导出核心适配器 export default VChart; // 默认导出
这里实现了三层导出策略:
-
图表组件集:通过 export * 批量导出所有预定义图表
-
核心适配器:单独导出 VChart 和 VChartSimple 两个主要组件
-
默认导出:保持与 VChart 原始 API 的兼容性
2. 环境适配层
2.1 VChart 组件
vchart.tsx 是主要的环境适配组件,它会根据当前环境选择合适的渲染策略:
const strategies = {
lark: () => <GeneralChart mode="miniApp"/>,
tt: () => <GeneralChart mode="tt"/>,
weapp: () => <GeneralChart mode="wx"/>,
web: () => <WebChart />,
h5: () => <WebChart mode="mobile-browser"/>
};
关键设计点:
-
使用策略模式处理不同环境
-
自动注册环境特定配置(如 registerLarkEnv )
-
传入特定的 mode 参数以适配不同小程序平台
2.2 VChartSimple 组件
simple.tsx 是 VChart 的简化版本,不包含环境注册逻辑:
export function VChartSimple({ type, ...args }: IVChartProps) {
const env = (type ?? Taro.getEnv()).toLocaleLowerCase();
const strategies = {
lark: () => <GeneralChart {...args} mode="miniApp" />,
tt: () => <GeneralChart {...args} mode="tt" />,
// ...其他环境
};
// 环境选择逻辑
}