如何讓Python在HTML中運(yùn)行
最近一直在更新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ù)庫(kù),并以此實(shí)現(xiàn)利用Python創(chuàng)建Web應(yīng)用的功能。
看到介紹里提到了調(diào)用JavaScript函數(shù)庫(kù)的能力,看來跟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 rel="stylesheet" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<py-script>
print('Hello, World!')
</py-script>
</body>
</html>保存好之后,在瀏覽器里打開就能看到這樣的頁(yè)面了:

回頭再看看這個(gè)html里的內(nèi)容,三個(gè)核心內(nèi)容:
- 引入pyscript的樣式文件:
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" /> - 引入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 rel="stylesheet" />
<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è)頁(yè)面的執(zhí)行效果是這樣的:

是不是很神奇呢?整個(gè)過程中都沒有大家熟悉的cs、js內(nèi)容,就完成了這樣一個(gè)圖的頁(yè)面實(shí)現(xiàn)。
小結(jié)
最后,談?wù)勗谡麄€(gè)嘗試過程中,給我的幾個(gè)感受:
- 開發(fā)體驗(yàn)上高度統(tǒng)一,對(duì)于python開發(fā)者來說,開發(fā)Web應(yīng)用的門檻可以更低了
- 感覺性能上似乎有所不足,幾個(gè)復(fù)雜的案例執(zhí)行有點(diǎn)慢,開始以為是部分國(guó)外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
到此這篇關(guān)于讓Python在HTML中運(yùn)行的文章就介紹到這了,更多相關(guān)Python HTML運(yùn)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中的上下文管理器相關(guān)知識(shí)詳解
這篇文章主要介紹了Python中的上下文管理器相關(guān)知識(shí)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
JupyterNotebook 如何調(diào)整輸出窗口的顯示效果
這篇文章主要介紹了JupyterNotebook 輸出窗口的顯示效果調(diào)整實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python如何實(shí)現(xiàn)xml解析并輸出到Excel上
本文介紹了如何使用Python的ElementTree模塊解析XML文件,并將解析后的數(shù)據(jù)寫入Excel文件,通過編寫XML文件、解析XML、編寫將數(shù)據(jù)寫入Excel的函數(shù),最終實(shí)現(xiàn)XML數(shù)據(jù)到Excel的轉(zhuǎn)換2025-02-02
Django利用LogEntry生成歷史操作實(shí)戰(zhàn)記錄
LogEntry是在后臺(tái)開發(fā)中經(jīng)常用到的模塊,它在admin是默認(rèn)開啟的。文中給大家介紹了在admin頁(yè)面上查看操作日志的方法及實(shí)戰(zhàn)代碼,感興趣的朋友跟隨小編一起看看吧2021-12-12
django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
淺談python實(shí)現(xiàn)Google翻譯PDF,解決換行的問題
今天小編就為大家分享一篇淺談python實(shí)現(xiàn)Google翻譯PDF,解決換行的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
使用Python對(duì)零售商品進(jìn)行數(shù)據(jù)分析
這篇文章主要為大家介紹了使用Python對(duì)零售商品進(jìn)行數(shù)據(jù)分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
使用PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò)的操作指南
PyTorch 是一個(gè)在研究領(lǐng)域廣泛使用的深度學(xué)習(xí)框架,提供了大量的靈活性和效率,本文將向你介紹如何使用 PyTorch 構(gòu)建你的第一個(gè)神經(jīng)網(wǎng)絡(luò),感興趣的小伙伴可以參考閱讀2023-07-07

