FaiChou

Why Not RN

19 Sep 2018

RN的使用已经到了瓶颈, 劣势愈发明显.

RN的短处

  1. RN可以使用热更新来快速更新app内容, 但是使用 codepush 不能上架 store, 只适合企业使用
  2. 分包机制不明显, 业务上的分包与开发上的分包混乱, 开发上的jsbundle包可以分成工具包/业务包/第三方包等, 配合热更新减少更新包的大小. 但是业务上经常会滥用分包来达到app融合的功能.
  3. 一个合格的RN开发人员必须对iOS和安卓都比较熟悉, 一个安卓开发人员使用RN, 需要了解iOS的打包, Xcode配置等一系列知识, 一个iOS开发人员使用RN也需要了解一些安卓配置.

记录RN的坑

1 issues/11813

Xcode新建打包配置(Staging), 编译时候会报错, 原因是Xcode编译React时候会将React的headers拷贝到Release编译目录下, 导致找不到头文件, 其实按常理应该被拷贝到Staging目录下, 但是Xcode的特性(or bug)编译子模块时候只有Debug和Release两种模式, 找不到第三种就会使用Release模式. 解决方案也很简单:

changed Staging Build Products Path value from $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)

2. 升级RN困难

旧项目一直保留在0.50版本, 升级rn, 加上pod上的错误, 使之困难重重.

3. 各种 RCT*.h 找不到

会经常遇到这种问题, 要么添加一个header search path, 要么就需要动手写 podspec 来搞 node_modules 里的私有库. 不管怎么搞, 都是对第三方库的一个更改, 一般不会将第三方库放到git上, 所以就需要在重要的文件中记录下操作, 比如 README.md, 以后每次 yarn 或者打包都需要检查下, 费劲~


comments powered by Disqus