为啥 react-native 包使用原生 SDK 而不是 JS/web 版本?

Posted

技术标签:

【中文标题】为啥 react-native 包使用原生 SDK 而不是 JS/web 版本?【英文标题】:Why do react-native packages use native SDKs and not JS/web versions?为什么 react-native 包使用原生 SDK 而不是 JS/web 版本? 【发布时间】:2016-06-09 17:49:17 【问题描述】:

纯信息问题,不是真正的问题,但是: 我记得按照说明进行操作,并看到有一些步骤可以让 react-native-fbsdk 正常工作。这些步骤涉及弄乱我的 android build.gradle 并添加 ios SDK 和 info.plist 等等。除此之外,为什么 Facebook 不使用 javascript SDK?不可能吗?如果是这样,为什么 Facebook 无法做到这一点?如果可能,他们为什么选择同时使用 android 和 iOS SDK?

【问题讨论】:

【参考方案1】:

React Native 的一个价值支柱是,它不仅仅是嵌入在原生包装器中的 html 5 网站。它从字面上使用本机 API/组件,SDK 也是如此。从技术上讲,纯 JS SDK 可以针对浏览器体验进行优化,依赖于 windowdocument,虽然功能可能能够在本地执行,但 RN 中提供的 polyfill 可能不足以覆盖实现。它进行 API 调用的方式也可能不同。视图也不同(RN 中没有 DOM),因此适用于任何 SDK 视图(按钮?)。

我刚刚完成了将 iOS SDK 转换为 React Native 包的过程,我觉得该实现将更符合原始 iOS SDK 的设计方式,因为它在幕后使用这些方法而不是纯 JS。 JS 只是调用本地方法,而不是接管方法。

只要我的 0.02 美元...

【讨论】:

以上是关于为啥 react-native 包使用原生 SDK 而不是 JS/web 版本?的主要内容,如果未能解决你的问题,请参考以下文章

原生iOS项目导入ReactNative,各种问题

集成 Parse-SDK-JS 以响应原生应用程序

如何在 react-native 中的 mapbox 地图上绘制导航线?

如何调试react-native包?

分享扩展反应原生 - 博览会

为啥“找不到 SDK”BehaviorsXamlSDKManaged,Version-12.0”