JS 转换(转译)

fbt 带有 2 个 babel 转换。

babel-plugin-fbt

第一个是 babel-plugin-fbt。 在内部,它首先将 <fbt> 实例转换为其等效的 fbt(...)。 之后,它将所有 fbt(...) 调用转换为带有中间有效负载作为第一个参数的 fbt._(...) 调用,并将运行时参数传递进去。

babel-plugin-fbt-runtime

此转换采用中间有效负载,并将其转换为 fbt._(...) 运行时期望的对象。

为什么有两个转换?

在内部,Facebook 实际上在构建时消耗 babel-plugin-fbt 的输出。 我们搜索 __FBT__ 标记,为 FBT 有效负载生成标识符(哈希),并在单独的进程中生成翻译后的有效负载后,将其存储起来以供以后查找。 在资源请求时,我们查找 payload identifier + locale 并在源代码中使用翻译后的有效负载内联替换标识符。 从概念上讲,我们正在执行 FbtTranslations 查找,但在服务器端提供 JS 资源之前。

上次更新时间:,作者:David