本次分享的内容:主要讨论在 PyCon US 2022[2] 上,由 Anaconda 发布的 PyScript[3] 技术。据说这项技术被 Anaconda 基于为 99% 的人带来编程这么宏伟的愿景而创建.

PyScript 简介

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

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

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

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

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

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

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

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

据官方意思,PyScript 框架的使用和 HTML 类似,只是功能相比后者更强大,不过经过号主测试,官方有吹逼的嫌疑。

为 99% 的人提供编程

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

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

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

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

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

PyScript 开发初体验

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

第一步:导入安装包

<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 代码逻辑,用于输出系统时间。

<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 逻辑代码,实现了一个用随机数字绘制的统计图表功能。

<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 npx = 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开发使用即可。

文件结构

├── matplotlib_2.html
└── py├── __init__.py└── data.py

Python 代码

# -*- coding: utf-8 -*-
import numpy as npdef make_x_and_y(n):x = np.random.randn(n)y = np.random.randn(n)return x, y

PyScript 代码

<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_yx, 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 框架的全部基础功能,想要尝试完整源码的码农,可关注我,下方即可领取。

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

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

    大家好,我是三十一[0],自上次更新 Nvidia 命令总结以来,期间

  2. 前端开发语言有哪些?需要掌握什么?

    前端开发语言有哪些?需要掌握什么?通常前端开发在基础阶段掌握html+css+js+jq:框架语言阶段掌握vue+react+小程序:后端掌握nodejs+mongdb+云开发:UI框架阶段熟悉常见的 ...

  3. web前端开发语言介绍

    web前端开发语言主要包含:html语言,css样式代码,javascript脚本,html5,css3,jQuery,ajax,Bootstrap,Backbone 1.html语言:网页的基本标记 ...

  4. 前端开发语言基础介绍

    前端开发语言基础介绍(纯图文版) 文字版推荐:https://blog.csdn.net/chenhande1990chenhan/article/details/54881478 目录 前端开发语言 ...

  5. 做Web前端开发的你必须会这几点!

    1.Web开发分类与区别 人们通常将Web分为前端和后端,前端相关的职位有前端设计师(UI/UE),前端开发工程师,后端相关的有后端开发工程师. 2.技术栈区别 看各大招聘网站上,公司对前端开发工程师 ...

  6. 不熟悉产品业务,做不好前端开发!

    web前端教程 用大白话,来讲编程 查看全文 http://www.taodudu.cc/news/show-1159842.html 相关文章: 2019年的web前端领域 [ IT版 ]啥是佩奇? ...

  7. python 19 认识爬虫+认识前端开发

    python 19 爬虫+认识前端开发 一 .爬虫介绍 1. 什么是爬虫 ? 爬虫就是获取网络数据(公开的数据)网络数据来源:网站对应的网页.手机APP(直接找到接口) 2. 爬虫的基本流程 第一步: ...

  8. 学会Python就能做游戏脚本开发?别天真了!—— 关于游戏脚本的3个质疑

    现如今想从事和游戏相关的工作,例如游戏开发或游戏脚本策划的伙伴越来越多. 很多想从事脚本开发的伙伴有如下3点质疑: 1.学会Python就可以从事游戏脚本的工作吗? 2.脚本开发只需要学习Python ...

  9. 计算机毕设Python+Vue音乐鉴赏网站前端开发(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. 红帆科技将参展2009第十三届中国国际软件博览会
  2. P1903 [国家集训队]数颜色 / 维护队列
  3. Redis Desktop Manager 利用ssh连接 Redis
  4. wps中的相交_【研途技能贴】| WPS里的布尔运算
  5. 图片太多加载过慢?学学图片懒加载吧
  6. BZOJ-1034 泡泡堂
  7. Spring Boot引起的“堆外内存泄漏”排查及经验总结
  8. 包机制、阿里巴巴开发手册
  9. 博士生“凡尔赛”大赏:全程靠自己发了篇SCI,导师发奖金拿到手软
  10. 数据结构与算法分析Java版pdf
  11. 我用Python的Matplotlib库绘制25个超好看图表
  12. If you insist running as root, then set the environment variable RUN_AS_USER=root before running thi
  13. 服务器技术的发展方向
  14. 【VR】一直困扰虚拟现实的VAC现象,真的无解么?
  15. PHP云任务Q助手Tools程序源码+多功能
  16. 物联网设备的网络连接---上篇
  17. pip3 install -i sklearn 安装报错
  18. YUV420P,YUV420,YUV420SP区别
  19. 专科生建议学云计算吗?云计算未来发展前景如何?专科学云计算怎么样?
  20. 计数计量单位KMGTPEZY【计算机】【天文】

热门文章

  1. 消息推送服务厂家对比 个推 - 极光 - 信鸽
  2. 用apidoc 生成在线接口文档
  3. CRM系统免费版和商业版区别
  4. 基于Adobe Flash平台的3D页游技术剖析
  5. 为什么传统的FPGA无法将智能传送到边缘
  6. 重温FPGA开发29
  7. 基于Arduino的智能家居语音识别系统设计
  8. jQuery动态加载瀑布流
  9. 并发编程三大特性:2、可见性(什么是可见性、解决可见性的方式)
  10. 《量化金融R语言初级教程》一1.2 对英国房屋价格建模并预测