|
| 1 | +# 深入小程序系列之三、 ReactNative和小程序混编 |
| 2 | + |
| 3 | +## 背景 |
| 4 | + |
| 5 | +本文我们将开一下脑洞,在 ReactNative 工程基础上下集成及运行小程序方案。 |
| 6 | + |
| 7 | +先看一下效果如下: |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | +## 环境搭建 |
| 12 | + |
| 13 | +``` |
| 14 | +npm install -g react-native-cli yarn |
| 15 | +``` |
| 16 | +官方的环境搭建文档已经有详细的说明,这里不再重复。大家可以看下我本地的环境配置版本,目前整个项目运行稳定,可以借鉴。 |
| 17 | + |
| 18 | +```bash |
| 19 | +$ react-native info |
| 20 | +info Fetching system and libraries information... |
| 21 | +System: |
| 22 | + OS: macOS 10.15.3 |
| 23 | + CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz |
| 24 | + Memory: 93.87 MB / 16.00 GB |
| 25 | + Shell: 3.2.57 - /bin/bash |
| 26 | + Binaries: |
| 27 | + Node: 10.20.1 - ~/.nvm/versions/node/v10.20.1/bin/node |
| 28 | + Yarn: 1.22.4 - ~/.nvm/versions/node/v10.20.1/bin/yarn |
| 29 | + npm: 6.14.4 - ~/.nvm/versions/node/v10.20.1/bin/npm |
| 30 | + Watchman: Not Found |
| 31 | + Managers: |
| 32 | + CocoaPods: 1.9.1 - /usr/local/bin/pod |
| 33 | + SDKs: |
| 34 | + iOS SDK: |
| 35 | + Platforms: iOS 13.4, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2 |
| 36 | + Android SDK: |
| 37 | + API Levels: 26, 28, 29 |
| 38 | + Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.0 |
| 39 | + System Images: android-26 | Google Play Intel x86 Atom |
| 40 | + Android NDK: Not Found |
| 41 | + IDEs: |
| 42 | + Android Studio: 3.6 AI-192.7142.36.36.6241897 |
| 43 | + Xcode: 11.4/11E146 - /usr/bin/xcodebuild |
| 44 | + Languages: |
| 45 | + Java: 10.0.1 - /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/bin/javac |
| 46 | + Python: 2.7.16 - /usr/bin/python |
| 47 | + npmPackages: |
| 48 | + @react-native-community/cli: Not Found |
| 49 | + react: 16.11.0 => 16.11.0 |
| 50 | + react-native: 0.62.2 => 0.62.2 |
| 51 | + npmGlobalPackages: |
| 52 | + *react-native*: Not Found |
| 53 | + |
| 54 | +``` |
| 55 | +## 新建 ReactNative 样例工程 |
| 56 | + |
| 57 | + |
| 58 | +### 新建 ReactNative 工程 |
| 59 | + |
| 60 | +```bash |
| 61 | + |
| 62 | +react-native init mopdemo |
| 63 | + |
| 64 | +``` |
| 65 | + |
| 66 | +稍等一会... |
| 67 | + |
| 68 | +初始化项目完成之后,你可以选择两种不同的方式运行 App 在 iOS/Android 平台: |
| 69 | + |
| 70 | +注意!ReactNative需要依赖本地安装对应的 iOS,Android 开发工具,即需要安装 Xcode 和 AndroidStudio。具体安装使用方法这里不赘述。 |
| 71 | + |
| 72 | +这里我们用 VSCode+Xcode 作为开发组合环境。 |
| 73 | + |
| 74 | + |
| 75 | +### 集成小程序解析引擎 |
| 76 | + |
| 77 | +这里我们采用凡泰集成免费社区版的小程序解析引擎,只需要 10 行代码量不到即可完成小程序集成。 |
| 78 | + |
| 79 | +1. 引入小程序引擎插件。在 package.json 文件中引入小程序 ReactNative 插件 |
| 80 | + |
| 81 | +```javascript |
| 82 | +"react-native-mopsdk": "^1.0.1" |
| 83 | +``` |
| 84 | + |
| 85 | +2. 在 main.dart 文件中增加以下小程序引擎初始化方法。 Mop.instance.initialize 这里需要用到 sdkkey 和 secret。可以直接在https://mp.finogeeks.com免费注册获取。注册使用方法可以参考[接入指引](https://mp.finogeeks.com/mop/document/introduce/access/mechanism.html) |
| 86 | + |
| 87 | +```javascript |
| 88 | +import MopSDK from 'react-native-mopsdk'; |
| 89 | +// 1. mop初始化 |
| 90 | +MopSDK.initialize({ |
| 91 | + appkey: '22LyZEib0gLTQdU3MUauASlb4KFRNRajt4RmY6UDSucA', |
| 92 | + secret: '4a915e447bcbd439', |
| 93 | + apiServer: 'https://mp.finogeeks.com', |
| 94 | + apiPrefix: '/api/v1/mop' |
| 95 | + }, (data) => { |
| 96 | + console.log('message;', data); |
| 97 | + }); |
| 98 | +``` |
| 99 | + |
| 100 | +3. 打开小程序 |
| 101 | + |
| 102 | +```javascript |
| 103 | +MopSDK.openApplet('appid','','',(data)=>{}); |
| 104 | +``` |
| 105 | + |
| 106 | + |
| 107 | +::: tip 提示 |
| 108 | +* **SDKKEY** 和 **Secret** 可以从前面部署的社区版的管理后台获取。 |
| 109 | +* **apiServer** 为这里是小程序生态后端的服务地址也就是前文所输入的`IP:端口`。 |
| 110 | +* **小程序id** 为在管理后台上架的小程序唯一ID(在小程序小架时自动生成) |
| 111 | +* 上述的参数可以在前文服务器部署的后台界面上获取,亦可以在没有部署服务端的情况下在[https://mp.finogeeks.com](https://mp.finogeeks.com)快速注册,免费获取。 |
| 112 | +* **重要事情说三遍,您可以在官方的github仓库中查看示例代码** [https://github.com/finogeeks/mop-react-native-demo](https://github.com/finogeeks/mop-react-native-demo) |
| 113 | + |
| 114 | +::: |
0 commit comments