震惊!Expo全家桶居然能这样了

3,806 阅读2分钟

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。这样能带来什么好处呢?

  1. 通过react-native init生成的纯净react native应用可以使用Expo的API
  2. 通过Expo工具链开发的应用可以更加无缝地转化成react native应用
  3. 通过Unimodules的拆分,Expo给了开发者选择引入API,降低Expo应用体积的能力
  4. 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开发赋予的新能力、新内容。

关于如何使用unimodules与原文

You can now use Expo APIs in any React Native app