第二十一期 AMA 掘金团队请来了闲鱼客户端架构师,《Fish-Redux》做者-- 邬吉风作了为期三天的 Ask Me Anything (AMA) 活动(活动已结束)。 咱们在此精选了一些来自用户的提问及邬吉风的回答。前端
阿里花名吉丰, 《Fish-Redux》做者。现任闲鱼客户端架构师,负责研发效能 & 高可用相关工做。react
- flutter目前是没有line-space的选项,可是咱们能够经过换算获得相同的结果。
- 自定义Refresh控件的原理和native基本相同,是能够彻底控制的。Future是一个对异步的封装,在刷新过程当中,使用Future是一种实现手段。
- Flutter的热更新方案除了闲鱼提出的模板json外,建议是跟随Google的官方方案。
- provide方案目前已经再也不建议使用,它的替代者是 scoped_model。
抛开场景直接作比较是不合理的,scoped_model和fish-redux,在各自的场景下有各自的优点。ios
相对而言,fish-redux 更适合有必定复杂度的中大型的项目。它核心解决了状态集中管理和组件分治管理的关系,因此一方面咱们能享受到Redux集中管理的巨大好处,另外一方面咱们也能享受到组件化分治的能力。同时对移动应用中最多见的ListView场景对了作了上层抽象,获得最佳的性能和最佳的分治模型。git
Dart会替代js吗?github
我认为dart不会彻底替代js,可是会做为一种对js的补充存在。同时dart语法上有很是多的对js的继承,对js的同窗在语法上算是友好的。算法
大家是如何解决TextField Widget 的光标高度问题的? flutter环境Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.3 18D109, locale zh-Hans-CN) 左边是咸鱼,右边是我作的编程
你截图里的闲鱼页面是用的native的输入法,不过咱们目前已经在将它变成flutter的实现了(内部对flutter的patch)。json
而你的右截图是flutter的实现,实际上是一个flutter的bug,它将空格符的高度做为光标的高度和全部textfield文本内容的高度,这致使了一系列的问题。redux
好消息是flutter团队正在处理这个问题,相信不久后,这个问题将获得完全解决。
对Provide状态管理怎么看?能够直接在fish_redux里面用吗
Provide状态管理目前已经再也不推荐了,它能够在fish_redux内使用,但并不推荐这样作。fish_redux更增强调的是单一数据源驱动。 固然若是有更加具体的case的话,欢迎去https://github.com/alibaba/fish-redux/issues 给咱们issue。
widget嵌套太不方便阅读了,有什么解决的办法
能够经过IDE的重构能力,拆分红若干小的函数,必定程度上会让可读性提升。
你好,我也是redux爱好者,不过基于对redux的不满从新写了一个flux架构的实现:react-control-center, counter实例:stackblitz.com/edit/cc-cou…, cc-antd-pro: github.com/fantasticso…, 我本身认为这样的方式是最接近react的方式去管理react状态,可是苦于redux生态已经作大作强,不知道你cc有何见解,或者建议,让我可以在redux的世界里可以杀出一条血路。
redux爱好者和强烈的不满彷佛是个矛盾体。 我简单看了你给的连接,看上去是个不错的设计。 开源自己是成就你我,普惠众人,没有那么强的对立性,建议是拥抱redux社区,作出更好的做品。
在当下,原生开发的优点依然存在,但从软件架构分层看,它更加适合往下层发展。 而对于广大的软件开发者而言,平常最多的每每是上层的具体业务需求,受效率和成本的驱动,将愈来愈趋向统一的跨端解决方案。
大前端是一种解决方案,flutter也是,它们有各自适合的场景,在这个基础上,我相信它们都会成为下一代的主流的跨平台解决方案。
而在这个过程当中,小公司反而是更加容易拥抱变化,成为这个技术领域的先驱。
- Flutter,就上层应用开发而言,对于新同窗是很是友好的一个框架。我建议在有实践的场景学以至用,是比较有效的学习方式。选择技术方向也是相似,只有在对的场景才有用。
- Fish Redux 是经过大量实践检验的项目,但在文档方面仅仅是知足最基础的要求,后面咱们会对文档整理和细化,也很是欢迎更多的社区同窗加入进来,一块儿让它变得更好,让它慢慢演进成一个有影响力的flutter应用框架。
- 从闲鱼的实践来看,flutter的问题已经不多了,目前在键盘、输入法相关场景下,flutter比native稍差些。图文混排能够自定义,通常是将图片转化为一个宽度为0字符,而后给它设置宽高。
- Ui2code也是闲鱼技术团队在作的一个技术项目,我本身也曾参与其中, 我相信它是将来终端技术的一部分,而且在不远的未来,就会变为一种通用的能力。
如今闲鱼ios版本也使用了flutter么?选用flutter而不是rn的考虑是什么?混合开发的状况下,为了部分页面而引入flutter的sdk,致使安装包大小变大,会不会得不偿失? 我是一名安卓研发,如今在考虑接下来学习rn仍是flutter,能给个建议么?
是的,目前闲鱼的Flutter是运行在两个平台上的。 引入Flutter,在Android端大体增长了6M大小,并非特别大,是可接受的范围。
RN和Flutter之间的比较,应该有很是多的文章。以我浅见看,RN是一种中间妥协方案,它会被浏览器技术的进步而取代,而Flutter是更加面向将来的一种完全的跨平台渲染框架。
对使用flutter与其余语言混合开发比较感兴趣(好比用flutter构建用户界面,用rust/kotlin写业务逻辑),可否讲讲?想这样作是由于不太喜欢dart的语法,以及但愿用rust能够提升性能。
选择任何技术都有它对应的场景,抛开具体场景谈技术是不合适的。
好比使用rust来编写业务逻辑,它适合什么场景,解决了什么问题?
若是比较性能,dart 代码AOT下会被编译成机器码,它的性能不可能会比rust低。
若是是语法问题的话,我建议是更加开发的姿态去接受新鲜技术的挑战。
我本身过去对dart也会存在疑问,可是随着深刻使用,会渐渐喜欢上dart。它使用友好,产物小,性能高,同时拥有AOT和JIT,支持毫秒级的hot-reload等等特性,这样你也能更加深刻的理解为何Google选择dart做为flutter的开发语言,它几乎就是最佳的终端语言选择。
闲鱼做为阿里巴巴在闲置流通领域的战略产品,是业内第一的闲置交易社区。
闲鱼技术团队推行打破技术栈分工限制(Android/iOS/HTML5/Server 编程模型和语言的统一), 以及计算机视觉技术在移动终端上的前沿实践工做。致力于利用先进技术推进业务发展。 特别的是,咱们在 Flutter 和 Tensorflow Lite 等新技术的研发及应用处于行业领先位置,加入咱们,一块儿用技术让生活变得更加美好!
闲鱼团队现面向各大高校诚招 客户端/服务端Java/前端/测试 实习生,base杭州阿里巴巴西溪园区 特别的咱们很是欢迎有算法经验的工程同窗加入咱们的团队,一块儿完成深度学习在UI识别、商品内容理解、视频图片分类和质量检测等领域的应用落地,让算法的价值普惠闲鱼亿级用户。 欢迎各位投递简历,详询tino.wjf@alibaba-inc.com
因为篇幅缘由,本期只摘录了部分问题,邬吉风 也回答了不少其余的技术、非技术问题,欢迎去他的 AMA 下面交流技术哟,传送门。