網站首頁 編程語言 正文
最近一直在更新Java新特性和IDEA Tips兩個專欄,其他方向內容的動態關注少了。昨天天晚上刷推的時候,瞄到了這個神奇的東西,覺得挺cool的,拿出來分享下:
相信你看到圖,不用我說,你也猜到是啥了吧?html里可以跑python代碼了!
看到好多知識已經開始猛吹未來了,但乍看怎么覺得有點像JSP?或者一些模版引擎?是進步還是倒退呢?與其瞎想,不如仔細看看這個東東的能力吧!
根據官方介紹,這個名為PyScript的框架,其核心目標是為開發者提供在標準HTML中嵌入Python代碼的能力,使用 Python調用JavaScript函數庫,并以此實現利用Python創建Web應用的功能。
看到介紹里提到了調用JavaScript函數庫的能力,看來跟JSP或者模版引擎還是有區別的。
PyScript 快速體驗
官方給了一個例子,可以幫助我們觀的感受這個開發框架的能力,不妨跟著DD看看,它能做啥吧!
第一個案例,hello world
代碼很簡單,就下面這幾行。你只需要創建一個html文件,然后復制進去就可以了。
<html> <head> <link /> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> </head> <body> <py-script> print('Hello, World!') </py-script> </body> </html>
保存好之后,在瀏覽器里打開就能看到這樣的頁面了:
回頭再看看這個html里的內容,三個核心內容:
- 引入pyscript的樣式文件:
<link />
- 引入pyscript的腳本文件:
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
-
<py-script>
標簽中寫具體的python代碼來輸出Hello World
如果你懶得自己敲代碼的話,本文的兩個案例代碼可以從百度網盤獲取。
第二個案例,數據定義 + 數據展示
先創建一個data.py
文件,然后加入前面的代碼。功能很簡單,就是隨機生成(x,y)的坐標
import numpy as np def make_x_and_y(n): x = np.random.randn(n) y = np.random.randn(n) return x, y
再創建一個html文件,加入下面的代碼
<html> <head> <link /> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> <py-env> - numpy - matplotlib - paths: - /data.py </py-env> </head> <body> <h1>Let's plot random numbers</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=1000) fig, ax = plt.subplots() ax.scatter(x, y) fig </py-script> </body> </html>
這里就稍微復雜一些了,除了hello world中的幾個要點外,這里還有這幾個要關注的地方:
-
<py-env>
標簽:這里聲明要引入的包和要引入的文件(上面創建的data.py
) -
<py-script output="plot">
:這里定義了要在<div id="plot"></div>
中輸出的內容,可以看到這里的邏輯都是用python寫的
這個頁面的執行效果是這樣的:
是不是很神奇呢?整個過程中都沒有大家熟悉的cs、js內容,就完成了這樣一個圖的頁面實現。
小結
最后,談談在整個嘗試過程中,給我的幾個感受:
- 開發體驗上高度統一,對于python開發者來說,開發Web應用的門檻可以更低了
- 感覺性能上似乎有所不足,幾個復雜的案例執行有點慢,開始以為是部分國外cdn的緣故,后來移到本地后,還是慢。這部分可能還需要進一步優化。
這個開發框架目前還只是alpha版本,未來一定還會有更多特性與優化出來,總體上我覺得這個框架還是非常cool的,尤其對于剛學會Python,或者只會Python,但又想快速開發Web應用的小伙伴來說,可能將會是個不錯的選擇,那你覺得這個框架如何?未來會不會火?留言區聊聊吧!
本文的兩個案例代碼放在百度網盤了,需要的點擊獲取吧。
鏈接: https://pan.baidu.com/s/18KV0P7Ly_rRvTn0xi3zCWQ
提取碼: 4wzd?
原文鏈接:https://blog.csdn.net/dyc87112/article/details/124679441
相關推薦
- 2023-11-24 局部路由守衛component守衛
- 2022-07-23 .Net創建型設計模式之工廠方法模式(Factory?Method)_基礎應用
- 2021-10-24 Linux多線程中fork與互斥鎖過程示例_Linux
- 2022-07-07 python中list*n生成多維數組與for循環生成多維數組的區別說明_python
- 2022-07-16 Spring Boot之Dao、Service、Controller通過注解委托給Spring容器
- 2022-11-07 go?分布式鎖簡單實現實例詳解_Golang
- 2022-09-12 python?通過dict(zip)和{}的方式構造字典的方法_python
- 2022-07-26 二分搜索防止整形溢出
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支