網(wǎng)站首頁 編程語言 正文
最近一直在更新Java新特性和IDEA Tips兩個(gè)專欄,其他方向內(nèi)容的動(dòng)態(tài)關(guān)注少了。昨天天晚上刷推的時(shí)候,瞄到了這個(gè)神奇的東西,覺得挺cool的,拿出來分享下:
相信你看到圖,不用我說,你也猜到是啥了吧?html里可以跑python代碼了!
看到好多知識(shí)已經(jīng)開始猛吹未來了,但乍看怎么覺得有點(diǎn)像JSP?或者一些模版引擎?是進(jìn)步還是倒退呢?與其瞎想,不如仔細(xì)看看這個(gè)東東的能力吧!
根據(jù)官方介紹,這個(gè)名為PyScript的框架,其核心目標(biāo)是為開發(fā)者提供在標(biāo)準(zhǔn)HTML中嵌入Python代碼的能力,使用 Python調(diào)用JavaScript函數(shù)庫,并以此實(shí)現(xiàn)利用Python創(chuàng)建Web應(yīng)用的功能。
看到介紹里提到了調(diào)用JavaScript函數(shù)庫的能力,看來跟JSP或者模版引擎還是有區(qū)別的。
PyScript 快速體驗(yàn)
官方給了一個(gè)例子,可以幫助我們觀的感受這個(gè)開發(fā)框架的能力,不妨跟著DD看看,它能做啥吧!
第一個(gè)案例,hello world
代碼很簡(jiǎn)單,就下面這幾行。你只需要?jiǎng)?chuàng)建一個(gè)html文件,然后復(fù)制進(jìn)去就可以了。
<html> <head> <link /> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> </head> <body> <py-script> print('Hello, World!') </py-script> </body> </html>
保存好之后,在瀏覽器里打開就能看到這樣的頁面了:
回頭再看看這個(gè)html里的內(nèi)容,三個(gè)核心內(nèi)容:
- 引入pyscript的樣式文件:
<link />
- 引入pyscript的腳本文件:
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
-
<py-script>
標(biāo)簽中寫具體的python代碼來輸出Hello World
如果你懶得自己敲代碼的話,本文的兩個(gè)案例代碼可以從百度網(wǎng)盤獲取。
第二個(gè)案例,數(shù)據(jù)定義 + 數(shù)據(jù)展示
先創(chuàng)建一個(gè)data.py
文件,然后加入前面的代碼。功能很簡(jiǎn)單,就是隨機(jī)生成(x,y)的坐標(biāo)
import numpy as np def make_x_and_y(n): x = np.random.randn(n) y = np.random.randn(n) return x, y
再創(chuàng)建一個(gè)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>
這里就稍微復(fù)雜一些了,除了hello world中的幾個(gè)要點(diǎn)外,這里還有這幾個(gè)要關(guān)注的地方:
-
<py-env>
標(biāo)簽:這里聲明要引入的包和要引入的文件(上面創(chuàng)建的data.py
) -
<py-script output="plot">
:這里定義了要在<div id="plot"></div>
中輸出的內(nèi)容,可以看到這里的邏輯都是用python寫的
這個(gè)頁面的執(zhí)行效果是這樣的:
是不是很神奇呢?整個(gè)過程中都沒有大家熟悉的cs、js內(nèi)容,就完成了這樣一個(gè)圖的頁面實(shí)現(xiàn)。
小結(jié)
最后,談?wù)勗谡麄€(gè)嘗試過程中,給我的幾個(gè)感受:
- 開發(fā)體驗(yàn)上高度統(tǒng)一,對(duì)于python開發(fā)者來說,開發(fā)Web應(yīng)用的門檻可以更低了
- 感覺性能上似乎有所不足,幾個(gè)復(fù)雜的案例執(zhí)行有點(diǎn)慢,開始以為是部分國外cdn的緣故,后來移到本地后,還是慢。這部分可能還需要進(jìn)一步優(yōu)化。
這個(gè)開發(fā)框架目前還只是alpha版本,未來一定還會(huì)有更多特性與優(yōu)化出來,總體上我覺得這個(gè)框架還是非常cool的,尤其對(duì)于剛學(xué)會(huì)Python,或者只會(huì)Python,但又想快速開發(fā)Web應(yīng)用的小伙伴來說,可能將會(huì)是個(gè)不錯(cuò)的選擇,那你覺得這個(gè)框架如何?未來會(huì)不會(huì)火?留言區(qū)聊聊吧!
本文的兩個(gè)案例代碼放在百度網(wǎng)盤了,需要的點(diǎn)擊獲取吧。
鏈接: https://pan.baidu.com/s/18KV0P7Ly_rRvTn0xi3zCWQ
提取碼: 4wzd?
原文鏈接:https://blog.csdn.net/dyc87112/article/details/124679441
相關(guān)推薦
- 2023-01-09 Android自定義ViewGroup實(shí)現(xiàn)九宮格布局_Android
- 2022-12-07 C++?IO設(shè)備讀寫功能實(shí)現(xiàn)詳解_C 語言
- 2022-02-27 VS2010引用全局變量報(bào)錯(cuò):無法解析的外部符號(hào)
- 2022-05-27 Jmeter如何使用BeanShell取樣器調(diào)用Python腳本_python
- 2023-07-28 el-tab 切換時(shí)添加動(dòng)畫
- 2022-05-05 Entity?Framework實(shí)現(xiàn)數(shù)據(jù)遷移_實(shí)用技巧
- 2022-08-29 .NET?Core自定義配置文件_實(shí)用技巧
- 2022-12-26 react?Input組件Compositionstart和Compositionend事件_Rea
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支