郑重声明:以前个人一些文章,被某些培训机构无情地、批量地、搬运到了他们各渠道的帐号中,而且添加了不少营销性质的内容,会让不少读者觉得是我发的。因此特地在此特别声明,但愿读者朋友们不要被坑了。我只会在个人公众号 Marno 和掘金发布文章,偶尔也会发知乎。并且个人文章禁止任何形式的未受权转载。react
若是你们有看到抄袭的能够立刻通知我,我必定会拿起法律武器,维护自身!以前没太在乎,想着本身读者不算多,可是最近看到有公众号博主所以被起诉了的,因此以为仍是有必要注意一下。git
昨天 React Native 团队在社区 github 仓库的 Issues 里发了一个话题,《What do you dislike about React Native?》,中文就是说,React Native 如今还有哪些地方让你不满意的?官方搞这个话题,难道是为了帮助被 RN 折腾已久的人们排解一下负面情绪么?哈哈~github
我心想让人夸不容易,可是让人吐槽还不容易么?原本觉得这个话题会被瞬间攻陷,但实际仍是有点意外,截至我写文章的时候也只有 13 个回复而已。固然,好像还有些回复是被官方秒删了编程
我把这些回复都看了一遍,有一些确实是在使用 RN 的过程当中,让人以为比较恼火的地方。下面我随便挑了几个我以为还不错回复翻译一下,不知道这些问题是否也在一样困扰着你呢?欢迎你们在下方留言讨论。react-native
准备好了么?RN 非官方皇-家翻译来啦~bash
原文: markdown
在用了 Typescript 后,我必须常常重载个人应用。当使用实时重载时,应用确实重载了,可是却显示红屏报错了,提示
Unable to find module for EventDispatche
。这个状况已经出现有一段时间了。实时重载的问题,再加上热重载也常常不稳定,就会让人在开发时候以为很恼火。这也会致使 Xcode 打印不少没用的日志,还有不少其余相关的相似问题。app
Marno:编程语言
确实是这样的,实时重载和热重载常常会致使一些问题,红屏也就算了,打不了手动 reload 下,可时不时的就让 packager 挂了,就很是难受了。oop
Marno:
这个哥们就显得有点激动了,来了个四连发,看来是“受迫害”已久了,哈哈哈~隔着屏幕都能感受到他在使用 RN 时的心情。他的这几个评论我就不一一翻译了,不过感受他应该是不怎么懂原生开发的,因此会有这些问题。
可能对于不少 Web 转 RN 的人来讲都会遇到相似的问题,好比原生项目的配置之类的,但这对于原生转 RN 的人来讲又都不是问题,因此可能官方并无太在乎这点,这对于一些新手来讲也显得有点不太友好。
不过我以为这些问题并没关系,不去完善也没有什么问题,当务之急仍是把更多精力集中到发布 v1.0 版本上。
原文:
在启动 packager 以后,我但愿能够经过命令行来控制 App 的运行。好比能够经过命令行控制实时重载,开启 debugger 之类的。
这些功能会提高开发体验,如今这种经过晃动手机或者按快捷键打开来 Dev Menu 的方式是很是有争议的。
可用的命令应该在你运行 react-native start 以后就提出出来,好比:
Metr Bundler ready. Loading dependency graph, done. To hot reload press "r" To restart the app press "R" To toggle debugging mode press "d" 复制代码
Marno:
这个是目前被点赞最多的回复了,简而言之,就是他但愿能够经过命令行控制应用重载、打开调试这些。我也以为如今这种经过晃动手机打开 Dev Menu 的方式特别麻烦,有时候手都快晃断了,菜单还没打开,或者晃了半天菜单打开了,可一停下的时候一不当心碰到屏幕就给弄关上了。并且老这么在办公室晃动,也有点太…
因此我是很赞同他的想法的。虽然不知道能不能经过命令行实现,可是至少能够提供个设置项,容许把经常使用的几个操做悬浮在屏幕上啊。
原文:
认真脸.jpg,如今这种经过 expo 初始化和运行项目的方式一点都不酷,不要误解我,并非说我不喜欢 Expo,而是它太过于沉重了 ,不管你的项目多简单,用了 Expo 后打个包都要 20M 起步了。
Marno:
这位兄弟就有点“过度”了,谁让你必须用 Expo 了呢?以为太占体积能够不用啊!不过话说回来这个问题也确实存在,也一度困扰了我好久,那段时间想把项目精简一下,因此搜了下有没有精简Expo 的办法,后来仍是官方论坛找到了 Expo 官方回复,说目前没有任何办法精简的。
不过好在他也认识到这个问题了,因此从 SDK32 开始就在重构了。从最近发布的 SDK33 来看,变化还挺大的,把不少非核心的功能移到了单独的仓库中,引用的时候就不能直接 import XXX form 'expo' 了,要经过指定的模块引入,这么作就是为了减少体积的。
原文:
我认为这样作有利于不少 JS 开发者(至少对我而言)快速的浏览 iOS 的原生代码。由于比起 Swfit 或者其余如今化编程语言来讲,Objective-C 不太利于阅读。另外,如今也有不少 iOS 原生项目也在使用 Swift 进行开发了。鼓励在 RN 中使用 Swfit 可使得调试原生或编写代码变得相对简单。
我我的建议 RN:
- 将经过 CLI 生成的 AppDelegate.m, AppDelegate.h 还有 main.m 文件改成用 Swift 实现。像 Flutter 就提供了能够选择使用 OC,Java 或者 Swift,Kotlin 来初始化项目的功能。
- 鼓励更多的社区仓库使用 Swift 写 iOS
Marno:
赞同,赞同,赞
快使用 Swift,哼哼哈!
Swift,一时用一时爽,一直用一直爽!
原文:
如今的 React Native 没有内置一个合适的原生 navigation 库,应该搞一个可使用 native 线程显示页面切换动画的导航器,而不是必须经过阻塞 js 线程。
Marno:
哈哈哈~天下苦 navigation 久已,不过如今已经好多了,基本被 react-navigation 一统天下了。刚开始的 RN 是内置了导航器的,并且搞了还搞了不止一个方案,可是效果都不怎么理想。与此同时社区出现了一些好用的导航器,尤为以 react-nativetion 为首
因此后来官方也就放弃挣扎了,心想既然社区作的好,那就用社区的吧,这才慢慢把导航器从内置代码中移除了。这哥们儿应该是用上 RN 没多久,因此才发出了这样的吐槽吧。并且交给社区维护,能够快速迭代,快速发版。这要是内置的出了bug,那得等多久才能有官方修复啊!
一不当心就写了 3000 字,太长了也没人看,因此还有一些其余回复,我就不挨个翻译了。若是感兴趣的话,能够去原文看下,固然也能够去回复一些你以为不喜欢的地方,至于官方会不会改呢,雨女无瓜!哈哈哈~也欢迎你们在下方留言。
讨论地址: github.com/react-nativ…