V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Bijiabo  ›  全部回复第 19 页 / 共 57 页
回复总数  1126
1 ... 15  16  17  18  19  20  21  22  23  24 ... 57  
2022-02-13 19:43:14 +08:00
回复了 FaiChou 创建的主题 iOS React Navigation 如何做到使用原生的 View Controller 来做 navigation 的?
@FaiChou

关于这个问题: 这是使用 RN 创建的项目, 里面只有一个 rootViewController. 它是如何(在哪里)实现 `将 NavigationController 的 View 作为 child view` 的? 是不是在编译 .h .m 时候给替换掉了? 具体是怎么完成的?


看到你的问题顺手看了一下 react-native-screens ,目前初步判断是这样的,可能不够准确。可以在 `RNSScreenStack.m` 中看到:

- 具体实现应该是对应此文件 249 行的 `[self addSubview:controller.view];`
- 这个 Native UI Component 封装实现了 `- (void)insertReactSubview:(RNSScreenView *)subview atIndex:(NSInteger)atIndex` 这个方法,可以拿到 JSX 中嵌套的子组件,渲染在 UINavigationController 中的子 controller 中

------

数据传输应该不会受到影响,目前还没遇到这方面的明显问题。看到现在新的 Fabric 布局引擎是基于 JSI 来做通讯的,不需要通过走 Bridge 的方式复制大量数据了。

关于生命周期这块不是看的很清楚(没仔细看,先做家务去 T_T...),应该是在 Native UI Component 首次渲染的时候设定为 child view 的。
2022-02-13 16:56:53 +08:00
回复了 FaiChou 创建的主题 iOS React Navigation 如何做到使用原生的 View Controller 来做 navigation 的?
将 NavigationController 的 View 作为 child view ,可以仔细分析一下 react-native-screens 中的 `RNSScreenStack.m`

在 SDK 中将继承自 `UINavigationController` 的 `RNScreensNavigationController` 作为原生导航管理用途,将 RNScreensNavigationController 的 View 作为 RNSScreenNavigationContainer 的 Native UI Component 的子 View ,大概是这样的。
2022-02-12 12:20:53 +08:00
回复了 maplerecall 创建的主题 Apple Safari 和 Webkit 团队终于承认错误并开始征求反馈
能改善就太好了!电脑上主要使用 Safari ,平时用的一些服务对 Safari 的兼容不怎么好,希望能尽快改善。

对于新时代 IE 这个说法严重认同,特别是调试某个版本 Safari 浏览器兼容性还要安装特定版本 macOS 这种蛋疼的设计,太坑了...
2022-02-12 02:21:17 +08:00
回复了 silencelixing 创建的主题 Android 公司准备重构 App,请问一下现在最流行的架构是什么?
@Hanggi Flutter 是基于 Skia 绘制,控件不是使用的原生控件。我作为一个用户的感觉,Flutter 的 ScrollView 的惯性和 bounce 效果令我感到不舒适,与系统体验不一致,非常明显。
2022-02-11 18:22:56 +08:00
回复了 Geekerstar 创建的主题 物联网 物联网 IOT 场景下 MQ 的技术选型
设备量 500 太少了,EMQ X 肯定满足需求。
置于 MQTT 协议的选择,取决于设备端的特性和支持程度,不同的设备类型、芯片原厂 /方案商提供的 MQTT SDK 会有一些差异,或者你们同事自己移植,与他们讨论一下吧。
2022-02-11 18:10:51 +08:00
回复了 silencelixing 创建的主题 Android 公司准备重构 App,请问一下现在最流行的架构是什么?
@CommandZi 严重同意,Flutter 就算了吧哈哈哈
2022-02-11 18:10:14 +08:00
回复了 silencelixing 创建的主题 Android 公司准备重构 App,请问一下现在最流行的架构是什么?
我现在依然使用 RN 方案来做公司主要业务开发,也服务过一些中小客户(项目金额大概 10-100W 之间)。针对楼主附言提到的问题,我认为大部分都是不是 RN 自身的问题,是团队的开发方式需要优化,不应该把锅甩给框架。

我一条条列一下我的观点:

1. 百度移动统计每次都需要手动埋点,无法实现自动埋点
自己的 RN 业务一般要自行封装导航路由和公共组件,完全可以实现自动埋点,梳理一下内部规范即可。我们现在用 AppCenter 来做的,相比原生差不了多少。


2. 很多三方的 SDK 都只有原生端接入,没有 RN 接入方式,需要自己封装一层 native 接口供 JS 调用
分开说:
- Native Module 一般工作量不大,主要接口调用,一次性工作。
- Native UI Component 相对复杂一些,最好 Native UI 封装完再套一层 React Native Component 封装,但对于整体工作量来说,比两端纯 Native 开发还是会小不少的(大部分场景)


3. 很多参数,例如:设置页面参数,通道参数,都是写在 RN 层,与原生层交互需要多一层逻辑
多的这层逻辑指的是 Native Module 封装,实际会影响性能和体验么?这样业务层 Android 、iOS 只写一遍岂不是更好?

4. RN 写的界面,没办法实现复杂的手势操作逻辑,例如:坐标定位不方便,无法解决兼容性问题。还有
手势传递、冲突等一系列问题也没有很好的解決方案。
这确实是个问题,对于高要求的复杂手势和动画来说有一些实现难度,可能封装 Native UI 会更好。对于一般手势交互效果,基本 react-native-gesture-handler + animated2 都能应对。


5. RN 本身也是一个框架,存在很多 Bug ,用原生写则不会有这些 Bug 。每次升级 RN 的版本都会是一个
大动作,不敢轻易升级,因为每次升级都会出现新问题,现在 RN 仍然有几百个 Bug 没有解决。
0.60+ 之后比较稳定了,目前没有遇到特别卡壳的问题


6. 一些界面没办法用 RN 实现,或者说在 RN 上找不到实现方案,例如 Android 的悬浮窗,ios 的画中画
功能。
这部分通过封装 Native Module 模块来解决就可以,一般都是特殊场景,特殊处理

7. RN 的性能、体积问题。性能问题:FlastList 列表渲染在有大量数据刷新,或者有复杂的列表功能时,
渲染卡顿,发热,用原生的 RecycleView 则不会有这些问题。RN 的 apk 包会比原生的大。RN 多了一
层 JS 与 Native 之间的一层 Bridge ,这层桥接也会影响性能。
我们有在业务场景中遇到过列表显示大量监控数据时的卡顿问题,换原生 TableView/RecycleView 也卡,主要还是数据处理上下功夫,通过优化渲染逻辑的方式可以解决。对于 RN 多的 Bridge ,新的版本有 JSI ,性能提升还是很显著的。


8. 三方支持库不如原生的多,#且基本上不怎么维护了,质量参差不齐,不少需求都需要自己造轮子
我认为原生库的封装成本不高,我们之前的业务就是从原生切到 RN 的,总体开发成本下降非常多,周期和质量都有显著提升。

9. 国际化问题:如果一些界面是原生写的,这些界面也需要国际化文本,那么文案要么在 native 做一套单
独的,这样就需要维护 json 和 xml 两套文本了,要么就需要从 RN 层传到 native 来显示。
这个可以同一套...写个脚本 XML 转 JSON ?

10. 测试同时没办法写自动化测试,因为 RN 界面的元素、控件,全部没有 ID ,无法定位。
我们有些 RN 业务界面室友做自动化测试覆盖的,可以使用 Detox 。对于 ID ,我想你说的是 testID ,在 0.5x 的版本中确实有一定问题,对于现在 0.60+ 来说,可以直接添加 testID 属性,文档地址: https://reactnative.dev/docs/view#testid

11. 和 native 强相关的功能,基本起不到什么作用:例如 IM 、OTA 升级,各种 so 库、蓝牙、SPP 通信。
没做过 IM 的业务,我知道极光有 RN IM SDK 。对于 OTA 升级、蓝牙通信,使用 RN 开发应用在业界是非常普遍的,比如小米的米家、涂鸦智能的涂鸦 app ,他们做物联网业务的必备功能。我这里自己接了几个出海项目,也有包涵这些特性,出货都没什么问题。RN 解决的是跨端界面的交互开发,就算用其他跨端方案,也是需要 Native 接口的封装。
2022-02-06 15:47:50 +08:00
回复了 gongquanlin 创建的主题 移动开发 2022 年了, React Native 和 Flutter、uni-app 怎么选?
首先排除 uni 和 Flutter ,然后...似乎没得选了
请问这个类似小程序码的图案叫什么?
2022-01-29 21:38:03 +08:00
回复了 sonders 创建的主题 生活 突然要面对人生大事的选择了
@zxCoder 合法卖 Yín 罢了
2022-01-29 20:24:51 +08:00
回复了 sonders 创建的主题 生活 突然要面对人生大事的选择了
换个角度看看也许会释然。

也许结婚不是大事,也可以不那么重要,也不一定是必须的。
也许不一定要买房。
也许婚姻不一定是全新的生活。

大家都第一次做人,没有啥绝对正确、必须的路线,开心就好了。
2022-01-26 22:57:12 +08:00
回复了 sungnix 创建的主题 Android 日本代购 Pixel 6 被税
我记得顺丰海淘也差不多收了这个数。

不过现在是特殊时期,健康码没有黄,人没有被强制拉取隔离,取到手机之后还能上网发帖,还能有命活着...不错啦
2022-01-25 23:07:28 +08:00
回复了 vbe 创建的主题 问与答 好的 IM 软件需要具备什么优点呢?
打错,不需要个人实名认证信息
2022-01-25 23:07:14 +08:00
回复了 vbe 创建的主题 问与答 好的 IM 软件需要具备什么优点呢?
1. 端对端加密
2. 需要个人实名认证信息
3. 服务器不在中国大陆
4. 安装包体积小于 100M
5. 没有杂七杂八的功能
2022-01-24 00:20:54 +08:00
回复了 aljun 创建的主题 程序员 2022 年最适合写业务代码的编程语言是哪个?
小公司、新业务的话推荐 TypeScript 。

- 前后端、移动端都可用,配合 TypeDoc 文档生成,多人协作不会有太大的坑。
- 需求不复杂的后端业务直接上函数计算,各个平台都支持 TypeScript
- 生态好、轮子多
- 好招人、上手成本低
2022-01-17 02:13:27 +08:00
回复了 DinnyXu 创建的主题 MacBook Pro 大家使用 M1 感受如何?
16 Macbook Pro ,感觉这 M1 的本儿 Wi-Fi 比起手机、老得 MacBook Pro 差的不是一点半点,经常是 Wi-Fi 存在,其他设备都能扫描到,电脑无法扫描到,重启才可以。
1 ... 15  16  17  18  19  20  21  22  23  24 ... 57  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2697 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 04:04 · PVG 12:04 · LAX 20:04 · JFK 23:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.