React Native三端同构

使用 React Native Web 实现三端统一开发 在现代应用开发中,跨平台开发已成为降低开发成本和提高效率的重要手段。React Native 是一个广受欢迎的框架,允许开发者使用 JavaScript 和 React 构建 iOS 和 Android 原生应用。而 React Native Web 的出现进一步扩展了这一能力,使得同一套代码可以运行在 Web 平台上,实现真正的“三端统一”开发。本文将详细探讨 React Native Web 的核心概念、架构、项目搭建方式、组件兼容性、布局策略、资源与样式复用,以及构建、部署和 SEO 优化方法,旨在为 阅读详情

React Native三端同构,即iOS、Android、Web共用一套代码,已知React Native已经支持iOS、Android,所以只需要做支持Web的工作就行了。

如何同构

我们可以利用现有框架来实现,主要以下步骤

1、使用create-react-app 来创建React Web项目

2、安装react-native模块,这一步其实就具备Android、iOS的能力了

npm install react-native

3、使用react-native-web ,可以跟React Native一样的API,如React Native是如下引用的

import { Text } from "react-native"

react-native-web是如下引用的

import { Text } from "react-native-web"

然后用webpack的alias属性,将react-native模块导入改成react-native-web导入,如下所示

   alias: {
        'react-native': 'react-native-web'
   },

具体接入

接入create-react-app

利用create-react-app创建Web项目,首先执行以下命令,安装create-react-app(要求npm 6+)

npm install -g create-react-app

执行以下命令创建React Web 项目

npm init react-app my-app

cd到my-app目录

cd my-app

执行以下命令,开放所有配置项

npm run eject

执行完,可以看到生成了config文件夹,我们后面步骤要修改webpack.config.js,目录如下

执行以下命令看服务是否正常

npm start

启动以下界面说明服务正常

接入React Native 

执行以下命令

npm install react-native

在package.json,增加起React Native服务的命令,如下

  "scripts": {
    "debug-rn": "react-native start --reset-cache",
  }

接入react-native-web

执行以下命令

npm install react-native-web

然后检查config/webpack.config.js,是否有以下配置,默认是有的

      alias: {
        // Support React Native Web
        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
        'react-native': 'react-native-web'
      },

这个是webpack的alias属性,可以将你的导入模块react-native,改为从react-native-web导入,如果你也引入阿里的antd,可以如下转换

alias: {
      '@ant-design/react-native': 'antd-mobile'
}

修改工程

增加src/index.native.js文件,.native代表Andriod、iOS用的文件,如下所示

|-- src
    |-- index.js  web使用
    |-- index.native.js Android、iOS使用
import React from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
import App from './App';


AppRegistry.registerComponent(
  'MyReactNativeApp',  // MyReactNativeApp是注册模块,改成你自己的就行
  () => App
);

修改src/App.js,代码如下

// In App.js in a new project

import React, { useState } from 'react';
import { View, Text, Button, Image,StyleSheet } from 'react-native';

function App() {
  return (
    <View >
      <Text style={styles.hello}>文本一</Text>
      <Text style={{fontSize: 40, backgroundColor: "#f00"}}>文本2</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center'
  },
  hello: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  }
});

export default App;

调试

执行npm run start,检查Web效果

执行npm run debug-rn,检查React Native

如下,说明配置完成

 

React Native三端同构(一: 基础方案) (一) 前言 React Native 三端(Web、iOS、Android)同构是指在使用 React Native封装组件 的代码下,让其在浏览器中运行出和在 React Native 环境下一样的页面。 对于使用 React Native 开发的页面,如果又单独为 Web 平台重复写一份代码代价是极大的,而 React Native 三端同构能以最小代价做到一份代码三端复用。并且也需要提供W... 阅读详情

相关推荐

小程序多端统一开发:一套代码多平台运行

本文旨在为开发者提供一套完整的小程序多端统一开发解决方案。我们将覆盖从技术选型到实际开发的完整流程,重点讲解如何在不同平台(微信、支付宝、百度、字节跳动等)小程序之间实现代码复用。介绍多端开发的背景和挑战分析主流跨平台框架的核心原理通过实际案例展示开发流程讨论性能优化和最佳实践展望未来发展趋势小程序: 一种不需要下载安装即可使用的应用,运行在超级App(如微信)内多端统一开发: 编写一套代码,可编译到多个平台运行: 领域特定语言,用于特定问题的解决方案跨平台框架。

小程序开发 868

React Native 三端同构在雪球的实践

React Native Web 由前 Twitter 前端主管 Necolas 开发,并使用该技术方案在 2017 年重构了 Twitter 网页 (Twitter Web App) 并沿用至今。React Native Web 在国内知名度不高,但是放眼世界 Twitter Web、Expo、NativeBase、React Native 官网等众多项目全部使用的 React Native Web 能力。

小王的技术库 1925

ReactNative开发的跨平台博客支持iOSAndroid和web

React Native开发的跨平台博客,支持 iOS,Android和web

React Native 三端同构实践

React Native三端同构实践

... 3287

光伏逆变器在环测试解决方案

光伏行业是利用太阳能光辐射将其转化为可用电能的行业。近年来,为应对气候变化和能源安全等挑战,全球对清洁能源的需求不断增长。太阳能作为最具潜力和可再生的能源之一,被视为替代传统化石能源的重要选择,光伏行业因此得到了迅猛发展,并在全球范围内得到了广泛应用。许多国家和地区都将光伏技术作为关键的能源发展方向。尤其是在新兴和发展中国家,光伏发电具有巨大的增长潜力,将成为未来市场竞争的重点。随着规模化生产的推进,光伏组件的制造成本不断降低。

shiwei0813的博客 960

如何把Excel的数据导入python?

Python数据分析——excl导入数据的简单方法(xlrd) 本文的初衷是发现网上很多Excel导入Python都没有结合具体Excel文档进行讲解,所以这篇文档将会呈现一个简单快速的Excel+Python的入门方法。 开发环境 Prerequisites: 在开始用Python导入Excel之前,要配置好自己的开发环境,最好有IDE(terminal也可)+安装相应的数据分析包。 IDE :pycharm,vscode,etc 数据分析包:matplotlib,xlrd,numpy,etc 导入数

qq_40783513的博客 7万+

React Native 三端同构实战

WeiboGoogle+用电子邮件发送本页面   0 React Native 三端(Web、iOS、Android)同构是指在不改动原 React Native 的代码下,让其在浏览器中运行出和在 React Native 环境下一样的页面。对于使用 React Native 开发的页面,如果又单独为 Web 平台重复写一份代码代价是极其大的,而 React Native 三端同构能以...

大灰狼的小绵羊哥哥的博客 1万+

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 633

京东 618:如何配合业务打造 JDReact 三端融合开发平台?

京东 618:如何配合业务打造 JDReact 三端融合开发平台? 阅读 616 收藏 31 2017-06-18 原文链接:mp.weixin.qq.com 腾讯云技术升级,年终钜惠!云服务器最高降价40%,CDN最高降价47%!限量秒杀中,立即抢购吧!https://cloud.tencent.com/act/bargin 策划|徐川、木环整理|李梦、尾

dream8062的专栏 2394

MIPI DPHY接口(基于Xilinx FPGA实现)案例分析

在Xilinx FPGA实现MIPI DPHY接口的案例(包括CIS协议层)。截止目前为止,Xilinx仅在Ultrascale+及其以上版本的FPGA IO可直接支持MIPI 电平输入,其他的,都需要转换成LVDS来接收。

ONEFPGA的博客 5628

WIFI和BT测试(射频工程师)

买不了吃亏买不了上当,我卖的是技能,你收获的是经验。

m0_58834499的博客 599

react-native中使用axios_React Native 三端同构实践

React Native 三端同构实践来源:ibm.com/cnReact Native 三端(Web、iOS、Android)同构是指在不改动原 React Native 的代码下,让其在浏览器中运行出和在 React Native 环境下一样的页面。对于使用 React Native 开发的页面,如果又单独为 Web 平台重复写一份代码代价是极其大的,而 React Native 三端同构能以...

weixin_39874795的博客 1304

【专栏目录】

🌟 深度学习工程师的终极武器库!本专栏深度解析近3年CV领域最前沿的YoloV8改进方案,每一种方法都经过实战验证,性能显著提升!🌟。

m0_47867638的博客 1万+

TS版react-native三端同构设计

什么是三端同构? 对于刚接触rn开发的同学可能不是太了解,简单介绍一下。三端指的是安卓、IOS、H5。rn本身就是跨平台框架,为了让RN能在不改动代码的情况下同时兼容H5,只需要引入一些库和配置一些细节即可。 本模板采用目前react-native@0.6x,react-navigation@5.x新版本,搭建ts开发环境。 新版本相关库的API与老rn版本有些是不兼容的,请不要随意更改主版本! 不管是对于刚入门RN的小白,还是熟练运用RN老版本的熟手,都能轻松上手 模板源码 搭建流程(从零起步) 1. 安

qq_35179602的博客 968

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2498

FLUENT Meshing Watertight Geometry工作流入门 - 4 局部加密区域

总结一下本课程中学到的内容:我们了解了如何使用模型中特定兴趣区域的BOI和FOI局部尺寸控制来加密网格。然后,了解了如何使用Box类型的局部细化区域。最后,学习了Ansys Fluent Meshing Watertight Geometry Workflow的Offset Surface类型创建局部细化区域任务。

B_etter_Man的博客 6645

React Native三端同构(二: webpack@4脚手架构建和项目代码规范)

(一)前言 一个完整的web开发手脚架,应该包含以下 babel-loader 图片 音视频 字体 样式处理 开发环境配置 生产多环境scripts配置,流程化前端生产构建 生产环境打包优化, 如构建速度,打包外链库,抽离公共模块,页面切片处理(代码内部), git commit 检查规范 和 eslint配置 (二)webpack配置 新增eslint配置 增加webpack配置 使用en...

JUSTIN的博客 1296

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[React Native]一个“三端”开发者眼中的React Native

先上一个ppt,不过好像要翻墙,内容跟本文基本一致,看不到可以先忽略 这里是我临时写的一个React Native的试水项目,打开后等会会看到gif动画演示。 https://github.com/xinyu198736/htmljs-ReactNative 欢迎star和watch。 三端的三观 大家别拍我,起这么个diao渣天的标题是为了吸引你进来,大家不要太在意用词

Jeff_NJUT的专栏 1173

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

跨端与同构开发技术一览

跨端技术速览

曲折旅程,艰难人生 1855

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

React Native 在 Web 前端跨平台开发中的优势与实践

React Native为Web前端开发者提供了一种高效跨平台移动开发方案。它允许开发者使用熟悉的React技术栈构建媲美原生体验的移动应用,通过JavaScript直接调用原生UI控件。核心优势包括:复用Web开发知识体系、90%以上的跨平台代码复用率、高效的JSI架构性能,以及丰富的原生API访问能力。开发者需注意从Web到RN的思维转变,如采用Flexbox布局、StyleSheet样式管理、React Navigation导航等。建议初学者从Expo工具开始,逐步适应原生开发环境。React Nat

2301_79858914的博客 1338

使用通过可复用的 EmptyState 与 SocialCard 组件,基于HarmonyOS API 24 消息为空、群组为空等场景模块化呈现,React Native鸿蒙跨平台开发来实战

Web Storage 的第2 版定义了两个对象:localStorage 和sessionStorage。的空间大小,尽管IE8 提供了remainingSpace 属性,用于确定还有多少存储空间(以字节计)可用。保存的cookie 越大,请求完成的时间就越长。永久存储机制,sessionStorage 是跨会话的存储机制。对cookie 的限制及其特性决定了cookie 并不是存储大量数据的理想方式。个数据项都作为属性存储在该对象上,所以可以使用点或方括号操作符访问这些属性,通过同样的操作。

wanmeijuhao的博客 431

前端系列 | 2015年双11手淘前端技术巡演 - 前言

15年双11刚落下帷幕。今年众所周知,是全面“无线化”的一年。数据上我就不说了,可以公开的数据我相信大家多多少少也从各方都了解到了。此文作为今年双11手淘前端技术巡演的前...

淘系技术 248

React Native鸿蒙跨平台fadeAnim状态值的初始化采用了new Animated.Value(0.5)构造函数,这在鸿蒙JSC引擎中会被优化为原生动画节点的创建

本文介绍了React Native骨架屏在鸿蒙生态中的实现方案。通过原子组件与组合组件的方式,构建了卡片、列表等通用占位结构,确保跨端布局一致性。动画采用原生驱动的透明度渐变,避免性能损耗。文章详细探讨了样式跨端适配、列表性能优化、状态管理及安全区域处理等关键技术点,特别强调在鸿蒙设备上需注意动画生命周期管理、布局稳定性和内存优化。通过类型化组件设计和智能动画循环机制,实现了流畅的加载体验,为React Native在鸿蒙平台的性能优化提供了实践参考。

2401_86122648的博客 826

Folo跨平台体验:桌面、移动、Web无缝同步

你是否曾在电脑上浏览重要文章,切换到手机时却找不到阅读进度?或是在Web端收藏的内容,打开桌面应用时发现空空如也?Folo(GitHub推荐项目精选)通过跨平台同步技术,让信息在桌面端、移动端和Web端自由流动,彻底解决多设备信息碎片化问题。本文将带你体验这一无缝衔接的信息管理方案,看完你将掌握:多设备数据实时同步的核心原理、三端统一的操作逻辑,以及如何通过Folo实现「一处操作,全端同步」的高效

gitblog_00087的博客 1203

rn源码ios_新年之初,回看我们用Taro开发RN的那些事儿

Taro 开发RN的抉择Taro RN的第一个项目尝试是公司网约车服务FAQ,当时为了三端同构采用了同步开发的方式,即打开小程序开发工具、同时是打开H5debug服务以及RN的开发服务,在RN上,我们使用IOS的模拟器作为调试。也是因为公司采用mac开发,所以不再安装Android环境。即便是这样16G内存配置环境下,三端同步开发依然会对电脑性能有着巨大的考验。如果使用Android环境...

weixin_36170641的博客 680

基于React Native的跨三端应用架构实践

一次编写,到处运行”(Write once, run anywhere )是很多前端团队孜孜以求的目标。实现这个目标,不但能以最快的速度,将应用推广到各个渠道,而且还能节省大量人力物力。React Native的推出,为跨平台的开发带来了新的曙光。 虽然Facebook官方blog的说法ReactNative支持“Learn once, write anywhere.”。但经过开源社区的不断努力...

weixin_34253126的博客 595
上一篇: React Native包体积优化之图片优化
下一篇: SpringBoot起服务报错
土豆爱吃西瓜
博客等级 码龄10年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值