关于javascript:python又搞事情-想一统天下

42次阅读

共计 2077 个字符,预计需要花费 6 分钟才能阅读完成。

python 最近又在搞大事件,就在最近,github 上忽然多了一个神奇的我的项目:git 地址.
并且最近始终在更新。一看这个名字就让咱们不禁想起 JavaScript,再去官网一看 pyscript 官网, 这家伙不仅模拟了 JavaScript 的名字,甚至连身子都想要取而代之!
官网对 pyscript 的冀望是能够在浏览器上间接运行 python。

<html>|

    ...|

    <py-script> print('Now you can!') </py-script>|

</html>|

怀着一颗好奇心,咱们把 github 上的代码克隆下来,发现是一个基于 node 的前端我的项目,那第一步先把他跑起来!
进入 \pyscript-main\pyscriptjs 目录下,

  1. 首先装置依赖 cnpm i
  2. 而后先在本地运行 npm run dev
  3. 关上 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 可能实现的性能。

不过从目前的体验上来看,在浏览器上运行 pythoon 属实是够慢的,每次关上页面都得等好几秒,并且第一次关上页面的时候居然还要下载 python 类库,github 上曾经有人提出了这个问题,并且官网答复他们曾经致力了,并且还在持续致力。

有网友说又能够少把握一门语言多实现一项性能。不过从目前用户体验这个角度来看,pyscript想要取代 JavaScript 在浏览器上的位置可能还有一段路要走,然而却给咱们提供了玩 python 的另一条新路线。pyscript还能够朝着那些方面倒退,欢送大家提出本人的认识。

正文完
 0