taro
taro copied to clipboard
我如果想给taro接入solidjs,我该如何去做。
这个特性解决了什么问题?
solidjs更小更快,个人觉得是现在小程序的最优解。个人想给taro接入solidjs,但是看了下taro的代码,感觉无从下手,不知道我应该如何去做。我看现在的框架接入都是写在taro仓库中的,如果想接入其他框架就必须写在taro中和taro的项目一起发布。有没有可能,taro提供公开的接口(比方说在config),这样第三方框架的接入就无需和taro绑定了。
这个 API 长什么样?
关联问题:https://github.com/NervJS/taro/issues/12611
@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 添加solidjs的支持应该和react非常类似,solidjs提供一个类似react-reconciler的接口,
然后就直接从这个文件中import render,再调用render(AppCompoent, xxx) ;
最后在babel.config.js中添加 babel-preset-solid 配置就可以了。
我拉了taro官方的仓库,但是感觉无从下手。
@Chen-jj 我现在遇到一个问题,view和text能够正常显示,但是button节点都无法显示,我看button创建的TaroElement和其他Taro节点一样挂载在他的父节点上,你知道这可能是什么问题吗?
@Chen-jj 我现在遇到一个问题,view和text能够正常显示,但是button节点都无法显示,我看button创建的TaroElement和其他Taro节点一样挂载在他的父节点上,你知道这可能是什么问题吗?
这个问题我已经解决了,现在又碰到一个问题,onClick事件绑定无效,我看TaroElement上handler里面已经有tap事件的数据了
问题比较抽象,建议要断点看看了
问题比较抽象,建议要断点看看了
这个也解决了,是我把 hooks.tap("batchedEventUpdates"...
里面删除导致的
@Chen-jj 我现在自己已经搞的基本可用了,如果我要提交merge request,有什么样的要求吗?
具体实现的代码能过 lint 就可以,我们 review 的时候再测试一下细节
最好可以额外提供测试用例、examples(根目录 examples 文件夹里新增示例项目)、RFC实现细节文档、文档、项目模板(需要看看特性跟 3.6 还是 3.7 发布,确定模板的具体分支)
@Chen-jj 我要提交merge request是不是必须要有h5的支持?
@Chen-jj
我是将一个react demo项目改造成改成用solid运行,node_modules中的@tarojs/plugin-framework-react
覆盖成自己文件;
小程序和h5都已经跑通了,现在准备把代码并入到taro仓库中;但是我不清楚taro中各部分的功能,能不能有一个人能指导我下,最好能够视频连线沟通下。
@Chen-jj 我提交了一个pr,帮忙看下, https://github.com/NervJS/taro/pull/13607
@zsytssk 老哥.solidjs的支持你还在搞不
继承了这位大佬的一些写法,优化了一丢东西,实现了在taro写solid,目前是单独发布的插件,还没合到taro中来,如果有想使用solidjs写小程序的,可以看看呢仓库