跳到主要内容

多平台支持

Taro Uno UI 支持多种平台,包括微信小程序、H5、React Native 等。本指南将详细介绍如何在不同平台上使用组件库。

🌐 支持的平台

平台支持状态注意事项
微信小程序✅ 完全支持需要配置 webpackChain
H5✅ 完全支持支持所有现代浏览器
React Native✅ 部分支持需额外安装依赖
支付宝小程序✅ 部分支持部分组件可能存在差异
百度小程序✅ 部分支持部分组件可能存在差异
字节跳动小程序✅ 部分支持部分组件可能存在差异

📱 微信小程序

配置要求

  1. Taro 版本:4.x 或更高版本
  2. Node.js:18.0.0 或更高版本
  3. 微信开发者工具:最新版本

配置步骤

1. 安装组件库

npm install taro-uno-ui

2. 配置 esnextModules

// config/index.js 或 config/index.ts
module.exports = {
// ...
mini: {
esnextModules: ['taro-uno-ui'],
},
};

3. 配置 Webpack

// config/index.js 或 config/index.ts
module.exports = {
// ...
mini: {
webpackChain(chain) {
// 添加 Taro Uno UI 到 mjsScript 规则
chain.merge({
module: {
rule: {
mjsScript: {
test: /\.mjs$/,
include: [/taro-uno-ui/],
use: {
babelLoader: {
loader: require.resolve('babel-loader'),
},
},
},
},
},
});
},
},
};

4. 引入全局样式

// app.tsx 或 app.jsx
import 'taro-uno-ui/dist/style.css';

常见问题

Q: 微信小程序中组件样式不生效?

A: 请检查是否正确配置了 webpackChain,确保 .mjs 文件能够被正确编译。

Q: 微信小程序中某些组件无法使用?

A: 部分组件可能依赖浏览器 API,在微信小程序中不可用。请查看组件文档中的平台支持信息。

💻 H5

配置要求

  1. Taro 版本:4.x 或更高版本
  2. Node.js:18.0.0 或更高版本
  3. 浏览器:现代浏览器(Chrome、Firefox、Safari、Edge 等)

配置步骤

1. 安装组件库

npm install taro-uno-ui

2. 配置 esnextModules

// config/index.js 或 config/index.ts
module.exports = {
// ...
h5: {
esnextModules: ['taro-uno-ui'],
},
};

3. 引入全局样式

// app.tsx 或 app.jsx
import 'taro-uno-ui/dist/style.css';

常见问题

Q: H5 中组件样式错乱?

A: 请检查是否正确引入了全局样式,或者是否存在 CSS 样式冲突。

Q: H5 中某些组件交互异常?

A: 请检查浏览器控制台是否有报错信息,可能是某些浏览器 API 不被支持导致的。

📱 React Native

配置要求

  1. Taro 版本:4.x 或更高版本
  2. Node.js:18.0.0 或更高版本
  3. React Native:0.70.0 或更高版本

配置步骤

1. 安装组件库和依赖

# 安装 Taro Uno UI
npm install taro-uno-ui

# 安装 React Native 依赖
npm install react-native-web react-native-svg

2. 配置 Taro 项目

// config/index.js 或 config/index.ts
module.exports = {
// ...
rn: {
esnextModules: ['taro-uno-ui'],
},
};

3. 引入全局样式

// app.tsx 或 app.jsx
import 'taro-uno-ui/dist/style.css';

常见问题

Q: React Native 中组件无法正常渲染?

A: 请确保已安装所有必要的依赖,特别是 react-native-webreact-native-svg

Q: React Native 中某些组件功能缺失?

A: Taro Uno UI 对 React Native 的支持是部分的,某些依赖浏览器 API 的组件可能无法在 React Native 中使用。

🔄 跨平台开发最佳实践

1. 检测当前平台

使用 usePlatform Hook 检测当前运行平台,以便进行平台特定的处理:

import { usePlatform } from 'taro-uno-ui';

const platform = usePlatform();

// 根据不同平台显示不同内容
{platform === 'weapp' ? <WeappComponent /> : <OtherPlatformComponent />}

2. 平台特定代码

使用 Taro 的平台条件编译语法,编写平台特定的代码:

// #ifdef H5
// H5 平台特定代码
console.log('当前是 H5 平台');
// #endif

// #ifdef MP-WEIXIN
// 微信小程序平台特定代码
console.log('当前是微信小程序平台');
// #endif

3. 处理平台差异

对于存在平台差异的组件,使用平台特定的实现:

// 自定义跨平台组件
const CrossPlatformComponent = () => {
// #ifdef H5
return <H5Component />;
// #endif

// #ifdef MP-WEIXIN
return <WeappComponent />;
// #endif

// #ifdef RN
return <RNComponent />;
// #endif
};

4. 测试所有平台

确保在所有目标平台上测试你的应用,以确保组件在不同平台上都能正常工作:

# 测试 H5
npm run dev:h5

# 测试微信小程序
npm run dev:weapp

# 测试 React Native
npm run dev:rn

📦 平台特定组件

WebView 组件

H5 平台:使用浏览器原生 WebView

微信小程序:使用微信小程序的 <web-view> 组件

React Native:使用 react-native-webview

支付组件

H5 平台:使用第三方支付 SDK

微信小程序:使用微信支付 API

React Native:使用 react-native-payments

地图组件

H5 平台:使用百度地图或高德地图 JavaScript API

微信小程序:使用微信小程序的 <map> 组件

React Native:使用 react-native-maps

🎯 性能优化

1. 按需加载组件

根据平台按需加载组件,减小初始包体积:

// 按需引入组件
import { Button } from 'taro-uno-ui';

// 或根据平台按需引入
// #ifdef H5
import { H5SpecificComponent } from 'taro-uno-ui';
// #endif

2. 优化渲染性能

在长列表等场景下,使用虚拟列表组件优化渲染性能:

import { VirtualList } from 'taro-uno-ui';

<VirtualList
data={longListData}
height={400}
itemHeight={50}
renderItem={({ item }) => <div>{item}</div>}
/>

3. 减小包体积

使用 Taro 的分包加载功能,减小主包体积:

// app.config.js 或 app.config.ts
module.exports = {
// ...
subpackages: [
{
root: 'pages/subpackage',
pages: ['index', 'detail'],
},
],
};

🔍 调试技巧

1. 使用开发者工具

  • H5:使用浏览器开发者工具
  • 微信小程序:使用微信开发者工具
  • React Native:使用 React Native Debugger

2. 打印平台信息

在开发过程中,打印当前平台信息,方便调试:

import { usePlatform } from 'taro-uno-ui';

const platform = usePlatform();
console.log('当前平台:', platform);

3. 模拟不同平台

使用 Taro 的 --platform 参数,模拟不同平台的运行环境:

# 模拟微信小程序
npm run dev:h5 --platform mp-weixin

# 模拟支付宝小程序
npm run dev:h5 --platform mp-alipay

📚 下一步