前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何看待 Python(PyScript) 可以做浏览器前端开发语言?

如何看待 Python(PyScript) 可以做浏览器前端开发语言?

作者头像
程序员荒生
发布2022-05-19 12:32:07
7020
发布2022-05-19 12:32:07
举报

大家好,我是三十一[0],自上次更新 Nvidia 命令总结以来,期间🐦了一周多。因为最近在整理 Etcd[1] 相关系列,耽搁了许多时间。如果大家对 Etcd 感兴趣,可以点个关注或添加号主微信,后续会做专题输出。

本次分享的内容:主要讨论在 PyCon US 2022[2] 上,由 Anaconda 发布的 PyScript[3] 技术。据说这项技术被 Anaconda 基于「为 99% 的人带来编程」这么宏伟的愿景而创建,接下来号主将带着大家一起体验这项技术,阅读全文预计花费 8 分钟。

PyScript 简介

PyScript 其实是一个代码框架,允许用户使用 HTML 和 Python 混合开发,基于浏览器创建丰富的 Python 应用程序。旨在为用户提供一流且易于展示和学习的编程语言。

那 PyScript 具体是什么呢?下面是它的一些核心部件:

「浏览器中的 Python」:支持启用插入式内容、外部文件托管(由 Pyodide[4] 项目托管),而不依赖于服务器端配置。

「Python 生态系统」:支持运行许多流行的 Python 包和科学堆栈(例如:numpy、pandas、scikit-learn 等)。

「Python with JavaScript」:支持 Python 和 Javascript 对象和命名空间之间的双向通信。

「环境管理」:允许用户自定义要运行的包和文件页面代码。

「可视化应用程序开发」:支持使用现成的精选 UI 组件,例如:按钮、容器、文本框等。

「灵活的框架」:可直接在 Python 中创建和共享新的可插拔和可扩展组件,使用方式非常灵活。

据官方意思,PyScript 框架的使用和 HTML 类似,只是功能相比后者更强大,不过经过号主测试,官方有吹逼的嫌疑(传送门->官方原文[5] )。

为 99% 的人提供编程

官方的初衷是希望提供一个可靠且可访问的框架,用于创建应用程序并将其运送到任何硬件和软件平台。

寻找后发现,想要达到为 99% 的人提供编程体验这一目标,几乎只能基于浏览器,而且浏览器本身也是一个不错的平台。浏览器可适用于任何地方(从笔记本电脑、平板电脑到手机),并且安全、强大和稳定。

因此,最后采用基于浏览器平台开发的方案,PyScript 的旨在提供以下功能:

  • 提供干净简单的 API
  • 支持标准 HTML
  • 扩展 HTML 以读取自以为是且可靠的自定义组件
  • 提供可插拔、可扩展的组件系统

很明显这是官方一个美好且远大的愿景

PyScript 开发初体验

想要进行 PyScript 开发,流程很简单,几乎和 HTML 前端开发步骤一致。

「第一步:导入安装包」

代码语言:javascript
复制
<head>
    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>

「第二步:Hello World 开发」

<py-script>组件里面是 Python 代码逻辑,用于输出系统时间。

代码语言:javascript
复制
<body>
    Hello world! <br>
    This is the current date and time, as computed by Python:
    <py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
    </py-script>
</body>

结果打印:

「第三步:数据分析图表开发」

<py-env>组件里面是 Python 依赖的安装包 numpy 和 matplotlib <py-script>组件里面是具体 Python 逻辑代码,实现了一个用随机数字绘制的统计图表功能。

代码语言:javascript
复制
<head>
    <py-env>
- numpy
- matplotlib
    </py-env>
</head>

<body>
    <h1>Let's plot random numbers:</h1>
    <div id="plot"></div>
    <py-script output="plot">
import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(500)
y = np.random.randn(500)

fig, ax = plt.subplots()
ax.scatter(x, y)
fig
    </py-script>
</body>

结果打印:

「第四步:加载 Python 文件开发」

如果想要直接引入现有的 Python 代码也很容易,先在<py-env>里面引入文件,然后通过<py-script开发使用即可。

文件结构

代码语言:javascript
复制
├── matplotlib_2.html
└── py
    ├── __init__.py
    └── data.py

Python 代码

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import numpy as np

def make_x_and_y(n):
    x = np.random.randn(n)
    y = np.random.randn(n)
    return x, y

PyScript 代码

代码语言:javascript
复制
<head>
    <py-env>
- numpy
- matplotlib
- paths:
  - ./py/data.py
    </py-env>
</head>

<body>
    <h1>Let's plot random numbers 2:</h1>
    <div id="plot"></div>
    <py-script output="plot">
import matplotlib.pyplot as plt
from data import make_x_and_y

x, y = make_x_and_y(n=500)

fig, ax = plt.subplots()
ax.scatter(x, y)
fig
    </py-script>
</body>

总结一下

作为一名 Pythonistas 首次尝试 PyScript 框架后的感觉:

  • 官方的 idea 还是很强大的,以浏览器为基础,的确能大大降低入门门槛。
  • 开发的确很便捷,熟悉<py-env></py-script>即可,但运行速度太慢,helloworld 加载了约 3s,随机图表加载了约 15s,都属于生产不可接受的范围。
  • 以 pyodide 进行编译运行,稳定性且不说,额外的内存开销也是逃不掉的。

以上,就是今天的全部内容,几乎包含了 PyScript 框架的全部基础功能,

References

  • [0] 三十一: http://www.lee31.cn/assets/image/ThirtyOneLee.jpeg
  • [1] Etcd: https://github.com/etcd-io/etcd
  • [2] PyCon US 2022: https://us.pycon.org/2022/
  • [3] PyScript: https://pyscript.net/
  • [4] Pyodide: https://github.com/pyodide/pyodide
  • [5] 官方原文: https://www.anaconda.com/blog/pyscript-python-in-the-browser
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李三十一 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PyScript 简介
  • 为 99% 的人提供编程
  • PyScript 开发初体验
  • 总结一下
  • References
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档