IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 探索一下PyScript的妙用 -> 正文阅读

[JavaScript知识库]探索一下PyScript的妙用

基础介绍

官网上的概述为

PyScript is a Pythonic alternative to Scratch, JSFiddle, and other “easy to use” programming frameworks, with the goal of making the web a friendly, hackable place where anyone can author interesting and interactive applications.

简而言之,就是Scratch、JSFiddle和其他“易于使用”的编程框架的python替代品,其目标是使web成为一个友好的、可hack的地方,任何人都可以在这里编写有趣的、交互式的应用程序。

PyScript官网中,核心功能介绍有

  • 浏览器中的Python:启用插入式内容、外部文件托管和应用程序托管,而不依赖服务器端配置
  • Python生态系统:运行许多流行的Python包和科学栈(如numpy、pandas、scikit-learn等)
  • Python与JavaScript:Python与JavaScript对象和名称空间之间的双向通信
  • 环境管理:允许用户定义要包含哪些包和文件以使页面代码运行
  • 可视化应用程序开发:使用现成的UI组件,如按钮、容器、文本框等
  • 灵活的框架:一种灵活的框架,可以利用它直接在Python中创建和共享新的可插入和可扩展组件
功能示例

来看看一些例子吧

直接下载压缩包pyscript-main

刚看了一下压缩包,要用npm构建一下,在example文件夹中会找到js和css文件,导入即可。

> npm install
> npm run build

或者使用CDN的方式使用PyScript

<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>

py-script:一般是使用<py-script>标签来写Python代码

<html>
    <py-script> print('Now you can!') </py-script>
</html>

使用write方法:我们使用一个标记将一行或多行按顺序打印到页面上。在中,您可以访问pyscript模块,该模块提供了一个.write()方法来将字符串发送到页面上已标记的元素中。

  <body>
    <b><p>Today is <u><label id='today'></label></u></p></b>
    <br>
    <div id="pi" class="alert alert-primary"></div>
    <py-script>
      import datetime as dt
      pyscript.write('today', dt.date.today().strftime('%A %B %d, %Y'))

      def compute_pi(n):
          pi = 2
          for i in range(1,n):
              pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
          return pi

      pi = compute_pi(100000)
      pyscript.write('pi', f'π is approximately {pi:.3f}')
    </py-script>
  </body>

py-env:还有第二个内置标签py-env,是通过引用.whl文件来使用第三方库的相关方法

<py-env>
- './static/wheels/travertino-0.1.3-py3-none-any.whl'
</py-env>
	<py-env>
	  - numpy
	  - matplotlib
	</py-env>

    <py-script output="plot">
      import matplotlib.pyplot as plt
      import numpy as np

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

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

当然对于这种高内聚的行为,不太符合现在模块分离的原则,因此,可以想到使用Python和HTML分离的方法

# data.py
import numpy as np


def make_x_and_y(n):
    x = np.random.randn(n)
    y = np.random.randn(n)
    return x, y
    <py-env>
      - numpy
      - matplotlib
      - paths:
        - ./data.py
    </py-env>
    <py-script output="plot">
      import matplotlib.pyplot as plt
      from data import make_x_and_y

      x, y = make_x_and_y(n=1000)

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

py-config:使用标记以YAML格式设置和配置关于PyScript应用程序的通用元数据。

<py-config>
  autoclose_loader: false
  runtimes:
    - src: "https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js"
      name: pyodide-0.20
      lang: python
</py-config>

pyscripy.js文件中可以看到

customElements.define('py-script', PyScript);
customElements.define('py-repl', PyRepl);
customElements.define('py-env', PyEnv);
customElements.define('py-box', PyBox);
customElements.define('py-button', PyButton);
customElements.define('py-title', PyTitle);
customElements.define('py-inputbox', PyInputBox);
customElements.define('py-register-widget', PyWidget);
customElements.define('py-loader', PyLoader);
customElements.define('py-config', PyConfig);

看了一下相关文档,目前暂时只有这几个元素了,而且试了一下建立HTTPS和HTTP的功能貌似不太支持,可能是由于在动态获取包的时候因为网速的原因难以下载吧,希望能在后期优化下载第三方库的hub,提高可拓展性。

当然,也可以直接先下载whl然后我们加载进去即可,但是这种貌似失去了某些便捷性。

突然想起Python课老师的话,“Python除了不能生孩子,其他都可以做”,期待越来越好!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:01:20  更:2022-06-25 18:04:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:13:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码