Board logo

标题: React Native 三端同构实战(5) [打印本页]

作者: look_w    时间: 2018-12-7 18:52     标题: React Native 三端同构实战(5)

适配自定义的 Native ModulesReact Native 开发的 App 中经常会出现 React Native 官方提供的 Native Modules
够用的情况,这时你会在项目中开发自己的 Native Modules,然后在 JavaScript 中去调用自己的 Native Modules。这在 ReactNative        环境下运行没有问题,但转成 Web 后执行时会报错说 Native Modules 上找不到对应的模块,这时因为在浏览器环境下是不存在这些自定义的 Native        Modules。为了让页面能正常在浏览器中运行,需要为 Web 平台也实现一份自定义的 Native Modules,实现方法可以在 Web 平台的执行入口的最开头注入以下        polyfill,内容如清单 6 所示:
清单 6. NativeModules        polyfill.js
1
2
3
4
import { NativeModules } from 'react-native';
import MyModule from './MyModule'; // 实现自定义 Native Modules 的地方

NativeModules.MyModule = MyModule; // 挂载 MyModule




这段代码的作用是把针对 Web 平台编写的自定义原生模块挂载到 Native Modules 对象上成为其属性,以让 JavaScript 代码在访问自定义 Native        Modules 时访问到针对 Web 平台编写模块。
编写特定平台的代码为了让 React Native 三端同构能正常的运行,在有些情况下你不得不编写平台特定的代码,因为有些代码只能在特定平台下才能运行,编写特定的 Web        平台代码有以下三种方法:
总结React Native 三端同构在理论上虽然可行,并且有现成的方案,但实践是还是会遇到一些问题,例如:
React Native 三端同构虽然无法实现 100% 和 React Native 环境运行一致,但能快速简单的转换大多数场景,以低成本的方式为你的项目带来收益。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0