Raul2018

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

From: https://mp.weixin.qq.com/s/TbwvKnc4Kn0UX511zMXewA

-------------------------------------------------------------------------------------

格式问题,最好参见引文。

简介

虽然现在有很多 Python web 应用框架,但大多数都是为小型数据应用程序设计的,或者使用了未经大规模验证的范式。随着应用程序复杂性的增加,代码组织、可重用性和状态往往会受到影响,结果要么是代码混乱,要么就直接使用 React 来开发应用程序了。

Solara 解决了这一问题。使用类似 React 的应用程序接口,我们无需担心可扩展性。React 已经证明了它有能力支持世界上最大的网络应用程序。Solara 使用 React 的纯 Python 实现(Reacton),创建基于 ipywidget 的应用程序。这些应用程序既可以在 Jupyter Notebook 中运行,也可以通过 FastAPI 等框架作为独立的网络应用程序运行。这种范式实现了基于组件的代码和极其简单的状态管理。

通过在 ipywidgets 基础上进行构建,我们可以自动利用现有的 widgets 生态系统,并在许多平台上运行,包括 JupyterLab、Jupyter Notebook、Voilà、Google Colab、DataBricks、JetBrains Datalore 等。

2

 

   

安装

使用 pip 命令安装

 

pip install solara

 

3

 

   

基础语法

3.1

 

   

创建响应式变量

使用 solara.reactive() 可以创建响应式变量,它可以绑定到 UI 组件上实现数据的响应式更新

 

count = solara.reactive(0)

 

3.2

 

   

定义组件

使用 @solara.component 装饰器可以定义组件

 

@solara.componentdef MyComponent():    # 组件的实现

 

组件可以显示响应式变量,也可以包含其他 solara 组件

3.3

 

   

引用组件

直接调用组件函数即可渲染组件

 

MyComponent()

 

3.4

 

   

更新响应式变量

如果响应式变量更新,那么其绑定的组件也会自动更新

 

count.value += 1

 

solara 通过响应式变量连接数据和组件,使用简单的 Python 语法可以构建动态页面

4

 

   

示例代码

下面是官方的一个完整代码示例

 

import solara
sentence = solara.reactive("Solara makes our team more productive.")word_limit = solara.reactive(10)

@solara.componentdef Page(): word_count = len(sentence.value.split())
solara.SliderInt("Word limit", value=word_limit, min=2, max=20) solara.InputText(label="Your sentence", value=sentence, continuous_update=True)
if word_count >= int(word_limit.value): solara.Error(f"With {word_count} words, you passed the word limit of {word_limit.value}.") elif word_count >= int(0.8 * word_limit.value): solara.Warning(f"With {word_count} words, you are close to the word limit of {word_limit.value}.") else: solara.Success("Great short writing!")

Page()

 

执行上述代码,命令是

 

solara run sol.py

 

会启动一个 web 服务,随即自动使用默认浏览器打开 http://localhost:8765

Image

这段代码使用了 solara 库实现了一个简单页面:

导入 solara 库,创建一个响应式的句子变量 sentence 和单词限制变量 word_limit。然后,使用 solara.component 装饰器定义一个 Page 组件。在组件内部,统计 sentence 中的单词数量 word_count。使用 solara.SliderInt 创建一个滑块组件,绑定到 word_limit 变量。使用 solara.InputText 创建一个文本输入组件,绑定到 sentence 变量。根据 word_count 和 word_limit 的关系,显示不同的打印信息,如果超过限制,显示 Error 提示;如果接近限制,显示 Warning 提示,否则显示 Success 消息。最后调用 Page 组件进行渲染。这样我们就可以通过拖动滑块实时修改限制,并输入句子查看字数提示的变化。

5

 

   

参考资料

  • https://github.com/widgetti/solara

posted on 2023-09-20 21:20  Raul2018  阅读(461)  评论(0编辑  收藏  举报