H2O Wave入门教程:从零开始构建Hello World应用

H2O Wave入门教程:从零开始构建Hello World应用

wave Realtime Web Apps and Dashboards for Python and R wave 项目地址: https://gitcode.com/gh_mirrors/wav/wave

前言

H2O Wave是一个现代化的Web应用框架,专为数据科学家和开发者设计,用于快速构建实时、交互式的Web应用。本教程将带你完成第一个Wave应用的创建过程,通过"Hello World"示例理解Wave的核心概念。

环境准备

1. 启动Wave服务器

首先需要下载并启动Wave服务器。解压下载包后,在终端执行相应命令:

# Unix/MacOS系统
./waved

# Windows系统
waved.exe

启动成功后,你将看到类似如下的输出,表示服务器已在本地10101端口运行:

2020/10/27 16:16:34 # 
2020/10/27 16:16:34 # ┌─────────────────────────┐
2020/10/27 16:16:34 # │  ┌    ┌ ┌──┐ ┌  ┌ ┌──┐  │ H2O Wave
2020/10/27 16:16:34 # │  │ ┌──┘ │──│ │  │ └┐    │ (version) (build)
2020/10/27 16:16:34 # │  └─┘    ┘  ┘ └──┘  └─┘  │ © 2020 H2O.ai, Inc.
2020/10/27 16:16:34 # └─────────────────────────┘

重要提示:运行任何Wave应用时,Wave服务器必须保持运行状态,因为它是浏览器与Wave应用之间的桥梁。

2. 创建工作目录

创建一个新目录作为项目工作区,并设置Python虚拟环境:

# Unix/MacOS
python3 -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
.\venv\Scripts\activate

安装Wave Python驱动:

pip install h2o-wave

编写第一个Wave应用

创建hello_world.py文件,内容如下:

from h2o_wave import site, ui

# 获取/hello路由对应的页面引用
page = site['/hello']

# 向页面添加一个Markdown卡片
page['quote'] = ui.markdown_card(
    box='1 1 2 2',  # 卡片位置和大小
    title='Hello World',
    content='"The Internet? Is that thing still around?" - *Homer Simpson*',
)

# 保存页面变更
page.save()

运行与查看

执行脚本:

python hello_world.py

然后在浏览器中访问http://localhost:10101/hello,你将看到一个显示荷马·辛普森名言的卡片。

代码解析

让我们深入理解这个简单程序的工作原理:

  1. 页面引用获取

    page = site['/hello']
    

    site对象代表Wave服务器上的所有页面集合,通过类似字典的方式访问特定路由的页面。

  2. 卡片添加

    page['quote'] = ui.markdown_card(...)
    

    页面(page)是卡片的容器。这里我们添加了一个Markdown卡片,包含标题和内容。

    • box='1 1 2 2'定义了卡片的位置和大小(列1,行1,宽2单位,高2单位)
    • 内容支持Markdown格式
  3. 变更保存

    page.save()
    

    保存操作会将变更广播给所有连接的浏览器。

实时编辑体验

Wave的一个强大特性是支持实时编辑。我们可以通过Python REPL交互式地修改页面:

from h2o_wave import site
page = site['/hello']
quote = page['quote']

# 修改标题
quote.title = 'Hello Again!'
page.save()

# 修改内容
quote.content = "D'oh! - *Homer Simpson*"
page.save()

每次保存后,浏览器中的内容都会实时更新,无需刷新页面。

Wave核心概念总结

通过这个简单示例,我们学到了Wave的几个关键特性:

  1. 页面保留:Wave服务器会保留页面内容,即使创建它们的程序已经退出
  2. 实时更新:任何变更通过save()方法立即生效
  3. 简单模型:基于页面和卡片的抽象使开发变得直观

下一步

掌握了这些基础后,你可以开始探索Wave更高级的功能,如:

  • 添加交互式组件
  • 构建数据可视化仪表板
  • 创建复杂的多页面应用

Wave的强大之处在于它将复杂的Web开发简化为操作Python对象的简单过程,让开发者可以专注于应用逻辑而非底层细节。

wave Realtime Web Apps and Dashboards for Python and R wave 项目地址: https://gitcode.com/gh_mirrors/wav/wave

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜璟轶Freda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值