taro icon indicating copy to clipboard operation
taro copied to clipboard

我如果想给taro接入solidjs,我该如何去做。

Open zsytssk opened this issue 2 years ago • 13 comments

这个特性解决了什么问题?

solidjs更小更快,个人觉得是现在小程序的最优解。个人想给taro接入solidjs,但是看了下taro的代码,感觉无从下手,不知道我应该如何去做。我看现在的框架接入都是写在taro仓库中的,如果想接入其他框架就必须写在taro中和taro的项目一起发布。有没有可能,taro提供公开的接口(比方说在config),这样第三方框架的接入就无需和taro绑定了。

这个 API 长什么样?

关联问题:https://github.com/NervJS/taro/issues/12611

zsytssk avatar Nov 16 '22 03:11 zsytssk

@zsytssk

我看现在的框架接入都是写在taro仓库中的,如果想接入其他框架就必须写在taro中和taro的项目一起发布。有没有可能,taro提供公开的接口(比方说在config),这样第三方框架的接入就无需和taro绑定了。

Taro 对前端框架的支持,基本上是做到和 Taro 核心解藕的,可以参考:@tarojs/plugin-framework-react@tarojs/plugin-framework-vue2@tarojs/plugin-framework-vue3。基于此,开发者可以编写一个 Taro 插件增加对 solid、svelte 等框架的支持,不需要与 Taro 项目捆绑在一起。我们也是很希望有第三方开发者可以帮忙实现对上述前端框架的支持~

大概的思路:

编写 Taro 插件

  • 调整 Webpack 配置
  • 新增处理运行时核心逻辑的 connect.ts 文件,主要处理了前端框架初始化与小程序 App、Page 对象之间的对接。

修改 @tarojs/runtime(可能需要修改)

这个包主要是在小程序里模拟浏览器的环境,提供了一系列 DOM、BOM 方法等,如果前端框架使用到的某些浏览器 API 目前没有被实现,有可能需要修改 @tarojs/runtime 以添加对应方法。

其它

  • 需要修改 @tarojs/cli 增加对应框架的项目初始化模板和初始化选项
  • 可能需要修改 @tarojs/webpack5-runner(公共的 webpack 配置)

如果有开发意愿,可以加开发者群细聊:

Chen-jj avatar Dec 05 '22 11:12 Chen-jj

@Chen-jj 添加solidjs的支持应该和react非常类似,solidjs提供一个类似react-reconciler的接口, image 然后就直接从这个文件中import render,再调用render(AppCompoent, xxx) ; 最后在babel.config.js中添加 babel-preset-solid 配置就可以了。

我拉了taro官方的仓库,但是感觉无从下手。

zsytssk avatar Dec 06 '22 09:12 zsytssk

@Chen-jj 我现在遇到一个问题,view和text能够正常显示,但是button节点都无法显示,我看button创建的TaroElement和其他Taro节点一样挂载在他的父节点上,你知道这可能是什么问题吗?

zsytssk avatar Mar 07 '23 04:03 zsytssk

@Chen-jj 我现在遇到一个问题,view和text能够正常显示,但是button节点都无法显示,我看button创建的TaroElement和其他Taro节点一样挂载在他的父节点上,你知道这可能是什么问题吗?

这个问题我已经解决了,现在又碰到一个问题,onClick事件绑定无效,我看TaroElement上handler里面已经有tap事件的数据了

zsytssk avatar Mar 09 '23 03:03 zsytssk

问题比较抽象,建议要断点看看了

Chen-jj avatar Mar 09 '23 03:03 Chen-jj

问题比较抽象,建议要断点看看了

这个也解决了,是我把 hooks.tap("batchedEventUpdates"...里面删除导致的

zsytssk avatar Mar 09 '23 05:03 zsytssk

@Chen-jj 我现在自己已经搞的基本可用了,如果我要提交merge request,有什么样的要求吗?

zsytssk avatar Mar 13 '23 02:03 zsytssk

具体实现的代码能过 lint 就可以,我们 review 的时候再测试一下细节

最好可以额外提供测试用例、examples(根目录 examples 文件夹里新增示例项目)、RFC实现细节文档、文档项目模板(需要看看特性跟 3.6 还是 3.7 发布,确定模板的具体分支)

Chen-jj avatar Mar 13 '23 03:03 Chen-jj

@Chen-jj 我要提交merge request是不是必须要有h5的支持?

zsytssk avatar Mar 14 '23 07:03 zsytssk

@Chen-jj 我是将一个react demo项目改造成改成用solid运行,node_modules中的@tarojs/plugin-framework-react覆盖成自己文件; 小程序和h5都已经跑通了,现在准备把代码并入到taro仓库中;但是我不清楚taro中各部分的功能,能不能有一个人能指导我下,最好能够视频连线沟通下。

zsytssk avatar Mar 21 '23 01:03 zsytssk

@Chen-jj 我提交了一个pr,帮忙看下, https://github.com/NervJS/taro/pull/13607

zsytssk avatar Apr 08 '23 02:04 zsytssk

@zsytssk 老哥.solidjs的支持你还在搞不

MySetsuna avatar Jul 28 '23 02:07 MySetsuna

继承了这位大佬的一些写法,优化了一丢东西,实现了在taro写solid,目前是单独发布的插件,还没合到taro中来,如果有想使用solidjs写小程序的,可以看看呢仓库

phy-lei avatar Jan 25 '24 10:01 phy-lei