python最近又在搞大事情,就在最近,github上突然多了一個神奇的專案: git地址.
並且最近一直在更新。一看這個名字就讓我們不禁想起JavaScript,再去官網一看pyscript官網, 這傢伙不僅模仿了JavaScript的名字,甚至連身子都想要取而代之!
官方對pyscript的期望是可以在瀏覽器上直接執行python。
<html>|
...|
<py-script> print('Now you can!') </py-script>|
</html>|
懷著一顆好奇心,我們把github上的程式碼克隆下來,發現是一個基於node的前端專案,那第一步先把他跑起來!
進入\pyscript-main\pyscriptjs目錄下,
- 首先安裝依賴
cnpm i
- 然後先在本地執行
npm run dev
- 開啟 http://localhost:8080/
首頁是一個純純的html檔案,在\pyscript-main\pyscriptjs\examples目錄下的index.html,如下圖:
我們先來看看最簡單的Hello world頁面,如下圖:
頁面確實夠簡單,再看看它的程式碼:
<body>
Hello world! <br>
This is the current date and time, as computed by Python:
<py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
</py-script>
</body>
想必大家都可以看得懂這段程式碼,精彩的點在於,只要在<py-script>
標籤中,就可以直接使用python語法來進行操作了,並且似乎比JavaScript還要直接嗷,甚至還有點資料繫結的意思。
再來看看另一個經典的例子,todo_list,對應todo.html,如下圖:
再看程式碼:
...
<py-script src="/todo.py"> </py-script>
...
<section>
<div class="text-center w-full mb-8">
<h1 class="text-3xl font-bold text-gray-800 uppercase tracking-tight">To Do List</h1>
</div>
<div>
<input id="new-task-content" class="border flex-1 mr-3 border-gray-300 p-2 rounded" type="text">
<button id="new-task-btn" class="p-2 text-white bg-blue-600 border border-blue-600 rounded" type="submit" pys-onClick="add_task">
Add task
</button>
</div>
<py-list id="myList"></py-list>
<div id="list-tasks-container" class="flex flex-col-reverse mt-4">
</div>
<template id="task-template">
<section class="task bg-white my-1">
<label for="flex items-center p-2 ">
<input class="mr-2" type="checkbox" class="task-check">
<p class="m-0 inline"></p>
</label>
</section>
</template>
</section>
在程式碼最上面竟然引入了一個.py
檔案,程式碼中使用pys-onClick
繫結了add_task
方法,而add_task
方法在引入的todo.py
中進行了宣告:
def add_task(*ags, **kws):
...
也就是說,pyscript
真的可以做到和JavaScript
在瀏覽器中執行時一樣的呼叫體驗,甚至還可以在瀏覽器中引用python
類庫!
在另一個todo_pylist.html頁面中,提供了直接在瀏覽器中執行python
命令的方法,
為了顯示自己在處理複雜圖形方面的能力,示例中還提供了和three.js
結合而成的webgl示例頁面:
和一些圖表頁面:
可以看到,在功能實現上,pyscript
基本可以實現JavaScript能夠實現的功能。
不過從目前的體驗上來看,在瀏覽器上執行python
屬實是夠慢的,每次開啟頁面都得等好幾秒,並且第一次開啟頁面的時候竟然還要下載python
類庫,github上已經有人提出了這個問題,並且官方回答他們已經努力了,並且還在繼續努力。
有網友說又可以少掌握一門語言多實現一項功能。不過從目前使用者體驗這個角度來看,pyscript
想要取代JavaScript
在瀏覽器上的地位可能還有一段路要走,但是卻給我們提供了玩python
的另一條新道路。pyscript
還可以朝著哪些方面發展,歡迎大家提出自己的看法。