Expo团队就在刚刚 (2019/3/1) 发布了一篇关于Expo更新的文章,我们来快速剖析一下Expo带来的新内容吧。
Expo的两种工作模式
在介绍新内容之前,我们先来看一下Expo现有的两种工作模式
Managed
Managed模式是由expo-cli
生成的,其中自带了完整的Expo SDK
,也就是大家最喜欢的Expo全家桶
。Expo全家桶
为react native应用开发、调试、发布流程做了极大的简化,也是新手玩家的不二之选。
Bare
Bare模式带来了更高的可控性(Native层的自定义,选择性引入Expo SDK
...),当然这种可控性对开发者带来的也就是更复杂的开发体验,对开发者的技能知识要求相对较高。
Unimodules
Unimodules是本次更新带来的最大内容,用一句话来说就是通过unimodules,我们可以在原生react-native应用开发中引入Expo的API
。这样能带来什么好处呢?
- 通过
react-native init
生成的纯净react native应用可以使用Expo的API - 通过Expo工具链开发的应用可以更加无缝地转化成react native应用
- 通过Unimodules的拆分,Expo给了开发者选择引入API,降低Expo应用体积的能力
- unimodules输出的包通用性极高,甚至可以被Flutter所使用
通过上面简单的好处描述就可以看出来,Expo的野心不仅仅是想让react native开发者使用Expo的某些API这么简单,Expo的Unimodule归根结底是想定义的一种业内的Native Module的统一开发 / 输出标准
,实现Native Module的大一统。
Expo的下一步
还记得令人厌恶的Native Module的倒入过程吗?修改客户端代码对于react native开发者来说是一个极大的挑战,简简单单装个包动不动一天就过去了。在下一个版本中unimodules将彻底抹平这一步,只要npm install,只要npm install,只要npm install,就足够了。
小结
我们可以看到的是Expo在逐步地拆分自己的能力,让用户去逐一选择他们所需要Expo所提供的内容,而不是像某些产品上来就给你套一个全家桶
,不用全家桶
啥都不能用的强盗逻辑。我们暂且不去论述这个选择对于Expo本身作为一个产品的好处坏处,但对于开发者这一定是一件极好的事情。十分期待Expo在未来给react native开发赋予的新能力、新内容。