瀏覽器終于可以運(yùn)行 Python 應(yīng)用了
來源 |?Python七號
作為 Python 程序員,我很羨慕那些 Javascript 開發(fā)者,動不動就能寫出令人驚艷的網(wǎng)頁。不過今年,我們也能用 Python 寫前端了:Anaconda 團(tuán)隊開發(fā)出了 PyScript,你可以在 HTML 里面編寫和運(yùn)行 Python 代碼,調(diào)用 Javascript 庫,換句話說,你可以用 Python 來進(jìn)行整個前后端開發(fā)。
什么是 PyScript

PyScript[1] 是 Anaconda 團(tuán)隊開發(fā)的一個 Javascipt 庫,可以在 HTML 標(biāo)簽里嵌入 Python 代碼,無需服務(wù)端就可以運(yùn)行 Python 代碼。
比如說,我們用 Python 在頁面上顯示日期,先編寫一個 hello_world.html 文件,內(nèi)容如下:

用瀏覽器打開,其運(yùn)行效果就是這樣的:
這意味著,我們可以在 HTML 中編寫和運(yùn)行 Python 代碼, 在 PyScript 中調(diào)用 Javascript 庫,并在 Python 中完成所有 Web 開發(fā)。
PyScript 的工作原理

PyScript 目前構(gòu)建在 Pyodide上,Pyodide 是 CPython 到 WebAssembly/Emscripten 的端口。
PyScript 支持在瀏覽器中編寫和運(yùn)行 Python 代碼,并將在未來為其他語言提供支持。
你可能想知道,什么是 WebAssembly?以下來自維基百科:
WebAssembly(簡稱 wasm)是一個實驗性的低級編程語言,應(yīng)用于瀏覽器內(nèi)的客戶端。WebAssembly 是便攜式的抽象語法樹,被設(shè)計來提供比 JavaScript 更快的編譯及執(zhí)行。WebAssembly 讓開發(fā)者能運(yùn)用自己熟悉的編程語言(最初以C/C++作為實現(xiàn)目標(biāo))編譯,再藉虛擬機(jī)引擎在瀏覽器內(nèi)執(zhí)行。WebAssembly 的開發(fā)團(tuán)隊分別來自 Mozilla、Google、Microsoft、Apple,代表著四大網(wǎng)絡(luò)瀏覽器 Firefox、Chrome、Microsoft Edge、Safari。2017 年 11 月,以上四個瀏覽器都開始實驗性的支持 WebAssembly。WebAssembly 于 2019 年 12 月 5 日成為萬維網(wǎng)聯(lián)盟(W3C)的推薦,與 HTML,CSS 和 JavaScript 一起,成為 Web 的第四種語言。
PyScript 帶來的便捷
1、PyScript 使更多的前端開發(fā)人員能夠使用 Python。
2、更低的編程門檻。因為幾乎每個人都可以訪問網(wǎng)頁瀏覽器,無論是在計算機(jī)上還是在手機(jī)上。這意味著不需要安裝任何額外軟件就可以開始編程。
3、有了 PyScript,不再需要擔(dān)心部署。PyScript 提供了“超越云端的架構(gòu)轉(zhuǎn)變”,一切都會網(wǎng)頁瀏覽器中發(fā)生。
如何使用 PyScript
PyScript 使用以下三個主要組件在 html 中編寫 Python:
py-env 定義了運(yùn)行 Python 代碼所需的包。 py-script 是在網(wǎng)頁中編寫 Python 代碼的地方。 py-repl 創(chuàng)建一個 REPL(讀取-評估-打印循環(huán))組件,用于評估用戶輸入的代碼并顯示結(jié)果。
比如代碼 todo.html[2] 中的兩個標(biāo)簽

執(zhí)行效果:

再來看一個 repl[3] 的例子:

執(zhí)行效果:

更多例子請訪問這里[4]。
如何運(yùn)行這些 demo ?
git?clone?https://github.com/pyscript/pyscript.git
cd?pyscript
npm?install?
npm?run?dev
然后瀏覽器訪問 http://localhost:8080,就會看到這個界面:

PyScript 的未來
PyScript 將 Python 帶到瀏覽器中,我覺得還是非常有價值的,對這項技術(shù)創(chuàng)新充滿期待,目前 GitHub 2.7K 的星,如果你也感興趣,不妨用它來做一個網(wǎng)站
參考資料
PyScript: https://github.com/pyscript/pyscript
[2]todo.html: https://github.com/pyscript/pyscript/blob/main/pyscriptjs/examples/todo.html
[3]repl: https://github.com/pyscript/pyscript/blob/main/pyscriptjs/examples/repl.html
[4]這里: https://github.com/pyscript/pyscript/tree/main/pyscriptjs/examples
(完)
覺得不錯,請點個在看
