当前位置: 首页 > news >正文

Python语言实现React框架

5700c58b1f5e57a7a2fdff17e04346c1.png

迷途小书童的 Note

读完需要

6

分钟

速读仅需 2 分钟

1

   

reactpy 介绍

reactpy 是一个用 Python 语言实现的 ReactJS 框架。它可以让我们使用 Python 的方式来编写 React 的组件,构建用户界面。

reactpy 的目标是想要将 React 的优秀特性带入 Python 领域,包括组件化、虚拟 DOM、声明式编程等。它可以无缝集成到我们的 Python 后端应用中。

2

   

实现原理

reactpy 的核心原理是使用 JavaScript 编写的高效 DOM 操作库 InteractJS 与 Python 代码相连接。

  • InteractJS 负责实际的 DOM 操作,实现类 React 的渲染和计算机制

  • Python 端用类的方式定义组件,通过 pyreact 接口与 InteractJSruntime 连接

  • Python 端 state 或 props 变化时,重新 render()并调用 rerender 将变化传给 JS 端

  • InteractJS 通过 DOM diff 运算进行精确更新,重新渲染页面

  • 事件和数据从 JS 端传回 Python 端做处理

3

   

基本用法

使用之前,我们需要安装一下

pip install reactpy

reactpy 的用法与 React 非常类似。下面是一个简单示例

from reactpy import component, html, run# 这是一个定义应用程序显示内容(本例是一个一级标题)的方法,@component装饰器应用其上,会将其转换为组件
@component
def App():return html.h1("Hello, world!")# 将App方法作为参数启动 web server
run(App)

执行上述脚本,在浏览器中打开链接 http://127.0.0.1:8000 ( http://127.0.0.1:8000 )

d3a9f91f0383a974bf64a231690bd835.png

有时候,我们希望两个组件的状态始终保持一致。在下面的示例中,2 个输入框共享相同的状态。状态通过父组件 SyncedInputs 共享。检查 value 和 set_value 变量的值。

from reactpy import component, hooks, html, run@component
def SyncedInputs():value, set_value = hooks.use_state("")return html.p(Input("First input", value, set_value),Input("Second input", value, set_value),)@component
def Input(label, value, set_value):def handle_change(event):set_value(event["target"]["value"])return html.label(label + " ", html.input({"value": value, "on_change": handle_change}))run(SyncedInputs)

执行脚本后,在 First input 中输入的字符,同时也会出现在 Second input 中。

2ed7dfa8adbd9b0c8120de9029440072.gif

下面是一个点击事件处理的示例

from reactpy import component, html, run@component
def PrintButton(display_text, message_text):def handle_event(event):print(message_text)return html.button({"on_click": handle_event}, display_text)@component
def App():return html.div(PrintButton("Play", "Playing"),PrintButton("Pause", "Paused"),)run(App)

当点击 Play 时,终端将打印 Playing,点击 Pause 按钮,将打印 Paused

ee80058efa5b8ff5c0c76402bd816af0.png

最后,再看一个示例,在页面中显示图片

from reactpy import component, html, run@component
def Title(title):return html.h1(title)# 使用网站的logo图片
# 设置CSS样式,width: 30%
@component
def Photo():return html.img({"src": "https://xugaoxiang.com/wp-content/uploads/2020/05/logo.png","style": {"width": "30%"},})@component
def PhotoViewer():return html.section(Title("My logo."),Photo())run(PhotoViewer)

代码运行后,效果是这样的

af7099783ed8ef3e59dc71fe83320997.png

4

   

总结

ReactPy 是一个 Python 库,它为使用 Python 进行前端开发带来了类似 ReactJS 的功能。借助 ReactPy,您可以轻松成为全栈开发人员,使用相同的语言处理前端和后端。

e79f6e613e905077a3eb4eeb68a6e596.jpeg

相关文章:

Python语言实现React框架

迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 reactpy 介绍 reactpy 是一个用 Python 语言实现的 ReactJS 框架。它可以让我们使用 Python 的方式来编写 React 的组件,构建用户界面。 reactpy 的目标是想要将 React 的优秀特性带入 Python 领域,…...

Netty入门学习和技术实践

Netty入门学习和技术实践 Netty1.Netty简介2.IO模型3.Netty框架介绍4. Netty实战项目学习5. Netty实际应用场景6.扩展 Netty 1.Netty简介 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具&…...

MySQL详细安装与配置

免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,在 Web 应用方面 MySQL 是最好的 RDBMS(Relation…...

裸露土堆识别算法

裸露土堆识别算法首先利用图像处理技术,提取出图像中的土堆区域。裸露土堆识别算法首通过计算土堆中被绿色防尘网覆盖的比例,判断土堆是否裸露。若超过40%的土堆没有被绿色防尘网覆盖,则视为裸露土堆。当我们谈起计算机视觉时,首先…...

说说你对Redux的理解?其工作原理?

文章目录 redux?工作原理如何使用后言 redux? React是用于构建用户界面的,帮助我们解决渲染DOM的过程 而在整个应用中会存在很多个组件,每个组件的state是由自身进行管理,包括组件定义自身的state、组件之间的通信通…...

《基于 Vue 组件库 的 Webpack5 配置》7.路径别名 resolve.alias 和 性能 performance

路径别名 resolve.alias const path require(path);module.exports {resolve: {alias: {"": path.resolve(__dirname, "./src/"),"assets": path.resolve(__dirname, "./src/assets/"),"mixins": path.resolve(__dirname,…...

基于PaddleOCR2.7.0发布WebRest服务测试案例

基于PaddleOCR2.7.0发布WebRest服务测试案例 #WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. #警告:这是一个开发服务器。不要在生产部署中使用它。请改用生产WSGI服务器。 输出结果…...

Solidity 合约安全,常见漏洞 (下篇)

Solidity 合约安全,常见漏洞 (下篇) Solidity 合约安全,常见漏洞 (上篇) 不安全的随机数 目前不可能用区块链上的单一交易安全地产生随机数。区块链需要是完全确定的,否则分布式节点将无法达…...

nodejs根据pdf模板填入中文数据并生成新的pdf文件

导入pdf-lib库和fontkit npm install pdf-lib fs npm install pdf-lib/fontkit 具体代码 const { PDFDocument, StandardFonts } require(pdf-lib); const fs require(fs); const fontkit require(pdf-lib/fontkit) let pdfDoc let font async function fillPdfForm(temp…...

UE4与pycharm联合仿真的调试问题及一些仿真经验

文章目录 ue4与pycharm联合仿真的调试问题前言ue4端的debug过程pycharm端 一些仿真经验小结 ue4与pycharm联合仿真的调试问题 前言 因为在实验中我需要用到py代码输出控制信息给到ue4中,并且希望看到py端和ue端分别在运行过程中的输出以及debug调试。所以&#xf…...

【数据分析】波士顿矩阵

波士顿矩阵是一种用于分析市场定位和企业发展战略的管理工具。由美国波士顿咨询集团(Boston Consulting Group)于1970年提出,并以该集团命名。 波士顿矩阵主要基于产品生命周期和市场份额两个维度,将企业的产品或业务分为四个象限…...

sizeof和strlen的对比

文章目录 🚩前言🚩sizeof🚩strlen🚩sizeof和strlen对比 🚩前言 很多小白在学习中,经常将sizeof和strlen弄混了。本篇文章,小编讲解一下sizeof和strlen的区别。🤷‍♂️ &#x1f6a9…...

Flutter系列文章-Flutter 插件开发

在本篇文章中,我们将学习如何开发 Flutter 插件,实现 Flutter 与原生平台的交互。我们将详细介绍插件的开发过程,包括如何创建插件项目、实现方法通信、处理异步任务等。最后,我们还将演示如何将插件打包并发布到 Flutter 社区。 …...

基于SpringBoot实现MySQL与Redis的数据最终一致性

问题场景 在并发场景下,MySQL和Redis之间的数据不一致性可能成为一个突出问题。这种不一致性可能由网络延迟、并发写入冲突以及异常情况处理等因素引起,导致MySQL和Redis中的数据在某些时间点不同步或出现不一致的情况。数据一致性问题的级别可以分为三…...

mysql与oracle数据库备份

mysql 1在执行mysql数据备份前,可先执行命令查看磁盘容量: # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50G 46G 1.6G 97% / tmpfs 1.9G 92K 1.9G 1% /dev/shm /dev/sda1 485M 39M 421M 9% /boot…...

UE4 材质学习笔记

CheapContrast与CheapContrast_RGB都是提升对比度的,一个是一维输入,一个是三维输入,让亮的地方更亮,暗的地方更暗,不像power虽然也是提升对比度,但是使用过后的结果都是变暗或者最多不变(值为1…...

TiDB 源码编译之 TiProxy 篇

作者: ShawnYan 原文来源: https://tidb.net/blog/3d57f54d TiProxy 简介 TiProxy 是一个基于 Apache 2.0 协议开源的、轻量级的 TiDB 数据库代理,基于 Go 语言编写,支持 MySQL 协议。 TiProxy 支持负载均衡,接收来…...

利用驱动漏洞

sbyt3/IObitUnlocker.Wrapper (github.com)...

开始MySQL之路——MySQL约束概述详解

MySQL约束 create table [if not exists] 表名(字段名1 类型[(宽度)] [约束条件] [comment 字段说明],字段名2 类型[(宽度)] [约束条件] [comment 字段说明],字段名3 类型[(宽度)] [约束条件] [comment 字段说明] )[表的一些设置]; 概念 约束英文:constraint 约束实…...

CMake基础和命令介绍

CMake是一个跨平台的构建工具,它可以生成各种不同平台上的构建文件,例如Makefile或Visual Studio项目文件。以下是一些常用的CMake命令: 1. cmake_minimum_required:指定需要的最小CMake版本。 2. project:定义项目名…...

【matlab利用shp文件制作mask白化文件】

matlab白化文件 mask文件的作用matlab制作mask文件mask结果 mask文件的作用 地理信息绘图中的 “mask” 通常指的是遮罩或掩膜,用于在地图或图像上隐藏、高亮或标记特定区域。 数据可视化: 地理信息绘图 mask 可以用于突出显示特定地理区域,使…...

【LLM】解析pdf文档生成摘要

文章目录 一、整体思路二、代码三、小结Reference 一、整体思路 非常简单的一个v1版本 利用langchain和pdfminer切分pdf文档为k块,设置overlap等参数先利用prompt1对每个chunk文本块进行摘要生成,然后利用prompt2对多个摘要进行连贯组合/增删模型可以使…...

方案:AI边缘计算智慧工地解决方案

一、方案背景 在工程项目管理中,工程施工现场涉及面广,多种元素交叉,状况较为复杂,如人员出入、机械运行、物料运输等。特别是传统的现场管理模式依赖于管理人员的现场巡查。当发现安全风险时,需要提前报告&#xff0…...

【Python】【数据结构和算法】查找最大或最小的N个元素

除了直接排序,还可以利用heaq模块的nlargest()和nsmallest()方法,例如: >>> nums [3, 5, 2, 4, 1] >>> smallest heapq.nsmallest(3, nums) >>> print(smallest) [1, 2, 3] >>> largest heapq.nlarg…...

C++day1(笔记整理)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.第一个c程序&#xff1a;hello world #include <iostream> //#:预处理标识符 //<iostream>:输入输出流类所在的头文件 //istream:输入流类 //ostream:输出流类using namespace std; //std&#x…...

关于chromedriver.exe一系列问题的解决办法

最新 chromedriver.exe下载地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/#stable 下载最新版本的 chromedriver.exe 将其解压在 python.exe 同目录下&#xff0c;以及Chrome 的路径下 例如&#xff1a; C:\Program Files\Google\Chrome\Applicati…...

css-选择器、常见样式、标签分类

CSS CSS简介 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文件样式的计算机语言。CSS不仅可以静态地修饰网页&#xff0c;还可…...

三星申请新商标:未来将应用于智能戒指,作为XR头显延伸设备

三星最近向英国知识产权局提交了名为“Samsung Curio”的新商标&#xff0c;这预示着三星正积极扩展可穿戴设备生态。该商标被分类为“Class 9”&#xff0c;这表明它有可能被用于未来的智能戒指。 据报道&#xff0c;三星计划将智能戒指作为XR头显设备的延伸&#xff0c;与苹果…...

0201hdfs集群部署-hadoop-大数据学习

文章目录 1 前言2 集群规划3 hadoop安装包上传与安装3.1 上传解压 4 hadoop配置5 从节点同步和环境变量配置6 创建用户7 集群启动8 问题集8.1 Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority. 结语 1 前言 下面我们配置下单namenode节点h…...

DevOps中的持续测试优势和工具

持续测试 DevOps中的持续测试是一种软件测试类型&#xff0c;它涉及在软件开发生命周期的每个阶段测试软件。持续测试的目标是通过早期测试和经常测试来评估持续交付过程的每一步的软件质量。 DevOps中的持续测试流程涉及开发人员、DevOps、QA和操作系统等利益相关者。 持续…...

网站discuz迁移怎么做/seo网站的优化流程

好长的的解释啊啊啊啊啊&#xff0c;看得脑袋有点胀&#xff0c;不看了&#xff0c;反正都说基本用不上&#xff0c;我就先做个记录&#xff0c;等过几天再看。转载于:https://blog.51cto.com/13502993/2147847...

企业网站管理系统手机版教程/厦门seo排名优化公司

大家好&#xff0c;我是小小教育&#xff0c;欢迎大家关注留言。随着大家上网课时间的推进&#xff0c;现在的学习任务已经完成一大半&#xff0c;而部编版二年级下册《数学》中的除法部分知识&#xff0c;又是一个过渡性很强的知识内容&#xff0c;这部分掌握的好坏&#xff0…...

新版wordpress增加备案/一键识图找原图

锤子“坚果手机”发布会因故推迟、PPT一堆错漏、抢红包故障&#xff0c;据悉是因锤子官网服务 器遭遇了数十G流量DDoS恶意攻击&#xff0c;现场PPT也是临时赶制、边写边用。关于DDoS攻击&#xff08;分布式拒绝服务&#xff09;&#xff0c;Akamai技术公司也发布了二季度的互 联…...

工作日志怎么写/凤山网站seo

刚接触Python语言&#xff0c;在练习的时候发现脚本里无法出现中文&#xff08;Python2.x中不支持中文&#xff0c;以下指仅在Python2.x环境下&#xff0c;Python3.x默认已支持中文&#xff09;&#xff0c;输入中文后&#xff0c;脚本会闪退&#xff0c;无法运行。例如&#x…...

有限责任公司章程/seo入门基础知识

“小懒&#xff0c;为什么IDM下载视频没有声音啊&#xff1f;”“为什么下载的视频只有一小段呢&#xff1f;”一般遇到这类问题&#xff0c;大概率是用IDM下载了分段加密的视频诸如“爱优腾”这些大视频平台&#xff0c;为了防止咱下载他们的视频都会将一个视频分成无数小段&a…...

公司网站能否申请国外免费空间/关键词搜索优化外包

请用C实现一个链表&#xff0c;实现链表的查找&#xff0c;逆置&#xff0c;替换&#xff0c;删除&#xff0c;添加&#xff0c;清空&#xff0c;创建。查找、替换和删除、添加里面都会用到遍历链表的操作&#xff0c;所以重点在于遍历&#xff0c; 链表的逆置和清空考虑到效率…...