【GitHub探索】用python写web前端之reactpy探索

news2024/11/25 7:06:16

你有想象过用python来写web前端这种操作么?近期在github-trending上就有这样的一个项目reactpy,可以满足你在python上写web前端的欲望。为此,笔者也决定踩踩坑,看看这个项目的形式到底如何,能不能很方便地实际投产。

要用到这个项目,除了reactpy库本身外,还需要一个backend-implementation来部署前端开发环境到本地端口。这里我们采取的操作是pip install reactpy[fastapi],这样就能直接安装上以fastapi为后端实现的前端开发环境部署。

要开始写一个简单的网页,可以参考reactpy的官方网站。基本代码如下:

import reactpy
from reactpy import component, html, run


@component
def reactpy_content(count):
    add_count, set_add_count = reactpy.use_state(1)
    multi_count = reactpy.use_memo(lambda: count * 3, [count])
    reactpy.use_effect(lambda: set_add_count(add_count + multi_count), [multi_count])
    return html.div(
        {
            'style': {'color': '#ff0000'}
        },
        html.ol(
            html.li(f'count: {count}'),
            html.li(f'multi_count: {multi_count}'),
            html.li(f'add_count: {add_count}')
        ),
    )


@component
def reactpy_app():
    count, set_count = reactpy.use_state(0)
    return html.div(
        html.h1('Debug Site'),
        html.button({
            'on_click': lambda e: set_count(count + 1)
        }, "Increment Count"),
        reactpy_content(count)
    )


if __name__ == "__main__":
    run(
        reactpy_app,
        host='127.0.0.1',
        port=7654
    )

展现出来的效果是:

debug_site

可以看到这个案例里面,我们能够模拟到react的一些基本特性,包括:

  • 基础的html标签
  • 组件嵌套
  • useState/useEffect/useMemo

可以说如果想只用python写前端,做前后端不分离的页面app,而且是一些极其简单的前端,用reactpy,其实也可以满足你的需求。甚至如果需要调用到原生js模块,也可以考虑参考这个文档去进行。

如果从工业化的角度来说,reactpy距离大规模的前端app还有一定的距离。不仅是因为以nodejs为基础的前端生态非常成熟,而且从开发部署角度来说,reactpy一是开发时期还没有办法做到响应文件变化随时重编译,二是部署前端的方式也不能用纯python,必须要结合nodejs的方式进行。所以如果考虑做复杂的,需要与后端分离的前端应用,reactpy并不是一个选择,现在还只能够作为玩具来玩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对比 document.URL 和 location.href

对比 document.URL 和 location.href document.URL 和 location.href 的不同点 document.URL只读 , location.href读写 给 document.URL 赋值, document.URL的值不会改变 给 location.href 赋值, location.href 的值改变了, 并且页面也改变了, 效果和 location.assign()一样…

解数独--难的一批

1题目 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数…

【MySQL】数据库SQL语句之DML

目录 前言: 一.DML添加数据 1.1给指定字段添加数据 1.2给全部字段添加数据 1.3批量添加数据 二.DML修改数据 三.DML删除数据 四.结尾 前言: 时隔一周,啊苏今天来更新啦,简单说说这周在做些什么吧,上课、看书、…

ubuntu编译安装pcl

环境配置: ubuntu18.04pcl1.11.0 下载源码并解压 tar -zxvf pcl-pcl-1.11.0.tar.gz 进入解压后的文件夹、建立bulid文件夹并进入该文件夹 安装依赖 sudo apt-get update 使用apt-get包管理器安装CMake: sudo apt-get install cmake 使用apt-get包管理…

创新案例 | 新锐品牌Usmile如何借助社媒运营打造爆品成为国产电动牙刷TOP1?

Usmile 是广州星际悦动股份有限公司旗下全面口腔护理品牌。2016 年至今,Usmile共荣获了 16 项国内外设计大奖,2020 年“双十一”期间,入选 2020 年度天猫十大新品牌,销售额超 1 亿,成为国内首个破亿的电动牙刷品牌&…

【立体视觉(一)】之成像原理与相机畸变

【立体视觉(一)】之成像原理与相机畸变 一、成像原理一)针孔模型二)坐标系转换1. 世界坐标系到相机坐标系2. 相机坐标系到图像坐标系3. 图像坐标系到像素坐标系4. 相机坐标系到像素坐标系5. 世界坐标系到像素坐标系 二、相机畸变一…

618数码节该如何挑选,推荐几款618值得入手的数码好物

又到了一年一度的618剁手季,各大电商平台都纷纷推出了超级大促活动,激发了无数值友的狂热购物欲望。你是否也已经开始摩拳擦掌,准备掏钱包买买买呢?那么赶快听听小编的建议吧!经过自己使用的亲身体验,小编给…

Superset | 地图无法显示的问题

知识目录 一、写在前面二、Superset地图显示不了三、Superset无法加载已更新的MySQL数据库数据 一、写在前面 大家好!我是初心,一直在寻找并尝试着适合自己的方向! Apache Superset是一款由Python语言为主开发的开源时髦数据探索分析以及可…

高通 Camera HAL3:集成camxoverridesettings.txt到整机版本

camxoverridesettings.txt 是高通提供给开发者临时进行CAMX、CHI-CDK功能调试的一种方式,通过配置各种变量值然后写入到该文件,能控制Log打印、参数配置、数据dump等多种功能 这个文件需要集成在设备目录的vendor/etc/camera/里 因为camxoverridesetti…

2023年金九银十最新 Java面试必背八股文(含答案)详解

马上又逢金九银十,意味着很多人又面临着就职和跳槽,相信还有很多人对于自己就职没有很大的把我,今天就给大家分享我一个朋友总结的Java必问核心知识点,以及面试真题解答。 Java 面试 现在 Java 面试都是靠八股文,所以…

SOFA Weekly|可信基础设施技术分论坛、Layotto 社区会议回顾与预告、社区本周贡献...

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展 欢迎留言互动~ SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&am…

【可乐荐书】Python自动化办公应用大全(ChatGPT版):从零开始教编程小白一键搞定烦琐工作

本栏目将推荐一些经典的、有趣的、有启发性的书籍,这些书籍涵盖了各个领域,包括文学、历史、哲学、科学、技术等等。相信这些书籍不仅可以让你获得知识,还可以让你感受到阅读的乐趣和魅力。 今天给大家推荐的书籍是:《Python自动…

互联网最全Java面试八股文,整整1658页,带你轻松应对各种面试题

又是一年一度的秋招大热门,为助力广大程序员朋友 “面试造火箭”,小编今天给大家分享的便是这份马士兵内部的面试神技——1658页《Java面试突击核心讲》! 注:这份神技是由内部十余名Java架构讲师纯手打总结的最新版面试突击文档&a…

分集与路径合并方式

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 分集分集的概念分集…

《C和指针》读书笔记(第十章 结构和联合)

目录 0 简介1 结构基础知识1.1 结构声明1.2 结构成员1.3 结构成员的直接访问1.4 结构成员的间接访问1.5 结构的自引用1.6 不完整的声明1.7 结构的初始化 2 结构、指针和成员2.1 访问指针2.2 访问结构2.3 访问结构成员2.4 访问嵌套的结构2.5 访问指针成员 3 结构的存储分配4 作为…

TiDB亿级数据亚秒响应查询集群部署

目录 1 集群部署1.1 环境要求1.1.1 操作系统建议配置1.1.2 服务器建议配置 1.2 环境准备1.3 安装TiUP1.3.1 什么是TiUP1.3.2 安装TiUP组件1.3.3 配置TiUP环境1.3.4 检查TiUP 工具是否安装1.3.5 安装 cluster 组件1.3.6 升级cluster组件 1.4 编辑部署文件1.4.1 常见的部署场景1.…

Go语言并发微服务分布式高可用

Go语言并发微服务分布式高可用 Go语言基础 环境安装 命令行输入go,当前操作系统Os环境中依赖于PATH指定的日录们去找命令(可执行文件)windows会优先搜索当前日录,当前日录没有才依赖PATH中指定的日录 环境变量: 操作系统运行环境中提前定义好的变量P…

FreeRTOS简单任务创建和任务删除(基于stm32F407)

1. 实验目的 使用动态方法 xTaskCreate()创建任务,使用vTaskDelete()函数删除任务;创建开始任务start_task,在开始任务中创建其他三个任务,创建task1任务实现LED0每500ms闪烁一次,创建task2任务实现LED1每500ms闪烁一…

Linux C简易聊天室

对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外…

notepadd++快捷键记录

记录下 notepadd 常用快捷键 1.搜索 普通搜索:Ctrl F 正则表达式搜索: 查找模式用 正则表达式 。如 A|B|C ,搜索多个关键字, 更多正则表达式探索中。 还可以选中 选取范围内 ,就会只在鼠标选中区域内查找。 2.区…