配置ReactNative环境并创建第一个程序

文章目录

一、背景

跨平台开发是日后开发的主流,这里记录学习RN跨平台开发的过程,为日后的工作做准备。

二、环境安装

  1. 安装 Node.js
    访问Node.js官网下载并安装LTS版本。

  2. 查看node版本

    node -v

  3. npm版本

    npm -v

三、创建第一个程序

在终端运行

复制代码
npx react-native@0.72.5 init yourAppName --version 0.72.5

注意: react-native init 命令已经被废弃了,不要在使用这个命令创建项目。

需要在0.72.5版本下创建,否则不能适配鸿蒙环境

四、添加鸿蒙环境依赖

  1. MyRNProject文件夹,找到package.json

  2. 在 scripts 下新增 OpenHarmony 的依赖, 添加依赖后的package.json文件如下所示。

    {
    "name": "AwesomeProject",
    "version": "0.0.1",
    "private": true,
    "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "lint": "eslint .",
    "start": "react-native start",
    "test": "jest",
    "dev": "react-native bundle-harmony --dev"
    },
    "dependencies": {
    "react": "18.2.0",
    "react-native": "0.72.5"
    },
    "devDependencies": {
    "@babel/core": "^7.20.0",
    "@babel/preset-env": "^7.20.0",
    "@babel/runtime": "^7.20.0",
    "@react-native/eslint-config": "^0.72.2",
    "@react-native/metro-config": "^0.72.11",
    "@tsconfig/react-native": "^3.0.0",
    "@types/react": "^18.0.24",
    "@types/react-test-renderer": "^18.0.0",
    "babel-jest": "^29.2.1",
    "eslint": "^8.19.0",
    "jest": "^29.2.1",
    "metro-react-native-babel-preset": "0.76.8",
    "prettier": "^2.4.1",
    "react-test-renderer": "18.2.0",
    "typescript": "4.8.4"
    },
    "engines": {
    "node": ">=16"
    }
    }

  3. 配置metro.config.js并添加OpenHarmony适配代码 右键选择记事本打开 AwsomeProject\metro.config.js,并添加 OpenHarmony 的适配代码。配置文件的详细介绍,可以参考React Native 中文网。修改完成后的文件内容如下:

    const {mergeConfig, getDefaultConfig} = require('@react-native/metro-config');
    const {createHarmonyMetroConfig} = require('@react-native-oh/react-native-harmony/metro.config');

    /**

    • @type {import("metro-config").ConfigT}
      */
      const config = {
      transformer: {
      getTransformOptions: async () => ({
      transform: {
      experimentalImportSupport: false,
      inlineRequires: true,
      },
      }),
      },
      };

    module.exports = mergeConfig(getDefaultConfig(__dirname), createHarmonyMetroConfig({
    reactNativeHarmonyPackageName: '@react-native-oh/react-native-harmony',
    }), config);

  4. 在 AwesomeProject 目录下运行生成 bundle 文件的命令。

    npm run dev

成功结果

如遇报错:error: unknown command 'bundle-harmony',需要手动在

package.json文件中添加依赖:

复制代码
"memfs":"^4.17.2"

运行成功后,会在your project/harmony/entry/src/main/resources/rawfile 目录下生成 bundle.harmony.js 和 assets 文件夹,assets 用来存放图片(如果 bundle 中不涉及本地图片,则没有 assets 文件夹):

  1. 将bundle 文件和 assets 文件夹粘贴复制到HarmonyOS工程MyRNApplication\entry\src\main\resources\rawfile路径下,在 entry/src/main/ets/pages/Index.ets 中使用。

参考文档:从零开始在HarmonyOS上开发React Native应用

相关推荐
成都渲染101云渲染66662 小时前
如何在3ds Max中实现更快、更高质量的渲染
前端·javascript·人工智能
SRET6 小时前
Mineradio 沙盒隔离安装完全指南 | 一键安全运行 Electron 应用!!!
javascript·经验分享·安全·electron·aigc·音视频·ai编程
全栈前端老曹6 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
free359 小时前
作用域链与 Environment:变量查找、遮蔽和赋值怎么实现
javascript
YHL9 小时前
🤖 Agent 智能体开发实战 · 第一课:Tool Use —— 让大模型自动干活
前端·javascript·人工智能
HUMHSX11 小时前
Vue 组件通信核心知识点梳理
javascript·vue.js·ecmascript
风止何安啊11 小时前
🚦 前端并发请求 “交通管制”:别让你的接口堵成早高峰
前端·javascript·面试
熊猫钓鱼>_>11 小时前
2026 前端的三场底层革命:当 Vue、React Native 和 Three.js 同时去掉中间层
前端·javascript·vue.js·react native·架构·webgl·three.js
名字还没想好☜11 小时前
React useEffect 依赖数组踩坑:闭包陷阱与清理函数
前端·javascript·react.js·react·useeffect
柒和远方13 小时前
LeetCode 4. 寻找两个正序数组的中位数 —— 二分划分的艺术
javascript·python·算法