dcloudio / uni-app

A cross-platform framework using Vue.js
https://uniapp.dcloud.io
Apache License 2.0
40.1k stars 3.63k forks source link

希望uni-app能推出将vue代码编译为微信小程序原生自定义组件的功能 #3379

Closed Awen-hub closed 2 years ago

Awen-hub commented 2 years ago

新功能描述 书写.vue组件,通过uni-app特定指令编译为微信小程序原生自定义组件。

现状及问题 当前uni-app有将vue代码编译为原生小程序分包、插件功能,但并没有专门的功能将vue代码编译为微信小程序自定义组件。

尝试方案 而当前利用uni-app开发微信小程序功能构建的产物,已经很接近编译成原生小程序组件的要求了。在此基础上进行一定改造,理论上是可以实现编译成原生组件功能的。

补充信息 1、为什么我们需要这个功能? 当前开发微信小程序的框架很多,各个框架之间编写的组件基本没有办法进行复用。而幸运的是,许多优秀框架目前都推出了在其框架构建的项目中使用微信原生自定义组件的解决方案,比如uni-apptaro。假设我们可以利用uni-app直接开发微信原生组件,那么理论上在其他方案中也能复用这部分代码。目前团队内想基于这个功能去开发一个微信小程序的组件库,然后在其余框架开发的项目中复用这些组件。 2、为什么选择uni-app? 目前由淘系团队开发的rax.js已经支持使用React编写的jsx组件编译为原生自定义组件,团队基于这个去开发组件库已经取得了一定的收益。但rax.js目前仅支持React语法。根据我们的调研,目前还在维护的且支持Vue语法的小程序框架有uni-appkbone.jsTaro.js 3.x。后两者都是重运行时方案,看上去不太可能去做这个功能,而uni-app的产物更偏重编译时,因此我们希望能基于uni-app去完成这项工作。 我们甚至有一个更激进的想法,那便是在一个小程序的项目中,既能使用React语法,也能使用Vue语法去编写代码。更好地发挥我们团队不同技术栈成员的特长。 3、一些细节 除了能直接编译出原生组件,我们也希望能够分离出npm依赖,仅在产物中保留import语句,由开发者通过微信小程序开发者工具去构建npm依赖,避免在使用多个组件时因为依赖重复导致体积浪费。

MonsterGoGoGo commented 2 years ago

请问你的这个问题解决了吗