---
title: 技术选型
summary: 从技术选型角度对比小程序与React Native、Flutter、uniapp的差异，帮助开发者了解小程序的优势和适用场景。
questions:
  - 小程序和React Native在写法上有什么区别？
  - 小程序的性能和React Native相比如何？
  - 从React Native迁移到小程序的成本高吗？
  - 小程序收费吗？
  - 小程序有哪些使用场景？
  - 小程序可以在哪些App上运行？
  - 小程序可以跨微信小程序运行吗？
  - 小程序和Flutter、uniapp相比有什么优势？
  - 小程序的技术支持情况如何？
---

## 前言

新技术出现的意义就是为了解决问题。所以在做技术选型时，需要思考的是，它能给我们的业务和客户带来什么价值。下面我们列举出小程序技术的优劣，和其他技术的比对，以及使用场景，帮助您做出正确的选型。

## 1. 为什么需要小程序？

小程序是一种新的移动应用程序格式，一种结合了 Web 技术以及客户端技术的混合解决方案。[小程序介绍](/cn/miniapp/common/desc/introduce)
当前，微信，百度，字节等都有自己的小程序体系。涂鸦基于当前开发者的诉求以及未来的业务规划也推出了自己的小程序体系，旨在解决原来的RN版本冲突问题，提升应用的开发体验以及灵活性，让开发者能以更低的成本，更快的速度开发出更灵活轻量，以及更具个性化的应用。

## 2. 小程序和 React Native 有什么区别？

**写法**
React Native 使用 React 语法来构建应用，但是存在一些限制。小程序则是用当下流行的小程序语法，另外，我们开发了 Ray 框架，也支持使用 React 语法，并且突破了限制，你可以使用完整的 React 特性。
在样式方面，React Native 提供了一套 CSS 样式的子集，在小程序，则没有这个限制，你可以使用完整的 CSS 语法。

**跨端**
React Native 强调的是 Learn once，write anywhere, 并不是一套代码双端运行，因此还是需要针对不同端做不同的处理。
小程序则是完全意义上的双端一致。

**性能**
React Native 通过限制写法以及使用原生组件的方式来提升性能，因此，在原理上，其性能是优于小程序的，因为小程序使用的是 webview 作为渲染引擎。为了弥补这部分的差距，小程序在用了混合渲染的模式，比如，像地图，视频等性能要求较高的组件，我们使用原生组件，普通的 View 组件还是通过 Web 标签渲染，这样能让小程序在获得灵活性的同时，在体验性能上和 React Native 基本持平。

**生态**
React Native 的生态不足。
小程序在国内生态较大，我们提供了以下方式，来进一步复用微信小程序和 Web 的生态：

- [兼容微信小程序生态](/cn/miniapp/develop/miniapp/guide/compatible)
- [使用 Web 库](/cn/miniapp/develop/miniapp/framework/plugin/intro)

另外，在国内，小程序的开发者数量以及生态建设更加庞大，学习门槛更低，多于企业招聘和人员培养周期有更大的优势。

## 3. 从 React Native 技术升级到小程序成本高么？

React Native 使用的是 React 语法，小程序也支持 React 语法，因此转换的成本非常低，
另外，在面板开发中，小程序提供了大量的物料和扩展库去覆盖原来 React Native 的 Panel SDK 所提供的能力，并且在技术上做了改造升级，让使用更加清晰顺畅。并且，当前面板小程序也支持了全品类的面板开发，而 React Native 体系也已经进入到了维护阶段，不再有新特性增加，因此，如果你需要开发一款新的面板，我们强烈推荐使用小程序。

- [物料平台](https://developer.tuya.com/material/)
- [扩展能力](/cn/miniapp/solution-panel/ability)

## 4. 小程序收费吗？

小程序本身完全不收费，不过在小程序中调用的一些云能力后续会收费，如智能计量等。

## 5. 小程序有哪些使用场景？

小程序的使用场景分为 智能小程序 和 面板小程序。面板小程序用来开发面板。
智能小程序则更加灵活，如果你使用 OEM App，能放到 Tab 页面，也可以使用 widget 技术开发卡片在首页或者个人页面嵌入做到局部的动态化。如果你使用 App SDK，那你只要接入 MiniApp SDK，那么你就可以打破限制，将小程序作为一个容器，在各个环节接入使用。因此，如果你希望以最低的成本做出更加灵活，个性化的 App，小程序将是更好的选择。

- [智能小程序介绍](/cn/miniapp/develop/miniapp/guide/start/smart)
- [面板小程序介绍](/cn/miniapp/develop/ray/guide/start/quick-start)
- [MiniApp SDK介绍](https://developer.tuya.com/cn/docs/app-development/mini-app-sdk?id=Kcxhf8ebbzcdb)

## 6. 小程序能在哪些 App 运行？

小程序基于 MiniApp SDK 运行，涂鸦的公版以及 OEM App 都已经默认集成了 MiniApp SDK，因此可以直接运行，如果是App SDK的用户，只要集成 MiniApp SDK，也能运行小程序。不过需要注意的是，MiniApp SDK 其中包含了各种模块化的能力，我们称之为 kit， 当你的小程序使用了kit的能力，需要保证其在目标App内kit存在且版本符合要求才能正常运行，否则就需要你升级App。 具体可查看 [能力概述](/cn/miniapp/common/desc/tech-stack/api)

## 7. 小程序的开发体验如何？

小程序提供了一个专门的开发工具 [Tuya MiniApp IDE](/cn/miniapp/devtools/tools) , 用来做小程序的开发调试。包括的功能有：

- 小程序模拟，包含暗黑模式，多语言，机型，比例缩放等，快速模拟小程序的各种状态
- 真机调试，可以实现直接利用开发工具，通过网络连接，对 App 上运行的小程序进行调试，帮助您更好的定位和查找在 App 上出现的问题
- 真机预览，可以不用发布版本，快速在 App 上查看最新修改的结果。
- 调试面板，可以查看小程序的元素，网络请求，console 输出，以及断点调试等。
- 面板工具，对接设备调试，快速模拟 DP，查看设备日志。

当你开发完成后，可以发布一个版本到 [小程序开发者平台](/cn/miniapp/common/desc/platform)，您可以在平台管理版本，包括发布版本，使用体验版功能，进行测试流程，对线上版本进行启停，来快速回退线上问题版本。另外还能进行多语言管理，操作日志查看，以及线上数据统计，让您的应用从开发，测试到上线的每个环节都尽在掌控。

## 8. 现在使用情况怎么样？

当前涂鸦内部已经全面使用小程序作为面板以及其他动态应用的开发模式。也有上百个企业开发者正在使用小程序进行应用的开发。小程序经过3年的打磨，从稳定性，成熟度，丰富性上，已经具备大规模使用的能力，可以满足大部分场景的需求。

## 9. 技术支持情况怎么样？

小程序提供详尽的技术文档，大量的源码示例，模板教程，在开发工具还内置了 AI 问答机器人，来帮助你自助解决问题。除此之外，小程序有官方的问答群，论坛供咨询，并保证在 24 小时内响应您的问题。另外你也可以和论坛内的其他开发者交流互动来获取灵感，共同进步。
[技术支持](https://developer.tuya.com/cn/miniapp/faq)

## 10. 和 Flutter，uniapp 等技术比对如何？

Flutter 作为一个渲染引擎，由于使用原生渲染，因此具有最好的性能表现，但是其使用 dart 语言，学习成本高，以及生态小等问题会给开发者带来不少困扰。
uniapp 作为国内生态较大的跨端框架，拥有不错的生态和成熟度，它提供了基于 Vue 语法的跨端框架，专属的代码编辑器，能在提供的 SDK 以及各个小程序具备良好的跨端能力，但是也是因为其提供的能力过多，有点大而不精，细小的问题无法收敛。也没有提供平台管理的能力。
涂鸦的小程序同样提供完整的小程序能力，支持小程序语法和 React 语法，我们更专注于设备控制，智能服务等业务领域，因此能提供更加稳定专业的技术服务。也提供了平台管理能力，相对前者，是一个完整的研发体系。
