js在線格式化網站
https://beautifier.io/
Python 執行 JS 代碼
NodeJS
安裝方式
先解決 JS 環境,這里推薦安裝 Node.js ,安裝方便,執行效率也高。
https://nodejs.org/zh-cn/
然后 pip install PyExecJS
就可以了。
- 使用例子
>>> import execjs
>>> execjs.get().name # 查看調用的環境
'Node.js (V8)'
>>> ctx = execjs.compile(""" # 執行 JS 語句
... function add(x, y) {
... return x + y;
... }
... """)
>>> ctx.call("add", 1, 2)
3
>>> with open('./test.js') as f: # 執行 JS 文件
... ctx = execjs.compile(f.read())
... ctx.call('add', 1, 2)
PyV8
這是 Google 官方將 Chrome V8 引擎用 Python 封裝的庫,和 PyExecJS 相比,這個庫很輕量,不需要額外裝 JS 環境,因為 V8 本身就是環境,同時也因為不需要啟動外部環境,執行速度很快。
- 安裝方式
Python3 安裝不要使用pip,因為官方只支持 Python2,需要在這里下載對應系統的二進制文件:github.com/emmetio/pyv…
然后解壓后將 PyV8.py 與 _PyV8.so (如so不是這個名字需要改成這樣) 兩文件復制到 Python 的 site-packages 目錄下,如 /usr/local/lib/python3.6/site-packages 。
使用例子
>>> import PyV8 # 注意大小寫
>>> with PyV8.JSContext() as ctx:
... ctx.eval("""
... function add(x, y) {
... return x + y;
... }
... """)
... ctx.locals.add(1, 2)
Js2Py
最后這個庫,作用是將 JS 代碼直接轉譯成 Python 代碼,這種方式可以擺脫調用 JS 環境的瓶頸,但遺憾的是如果用於很長的混淆 JS 代碼,轉譯過來的大概率會報錯… 所以只建議先嘗試一下,如果報錯及時更換上面的庫。
安裝方式
pip install js2py
使用例子
>>> import js2py
>>> add = js2py.eval_js("""
... function add(x, y) {
... return x + y;
... }
... """)
>>> add # 可以看到大括號里已被轉譯
'function add(x, y) { [python code] }'
>>> add(1, 2)
3
>>> # 使用下邊這個方法可以輸出轉譯后的代碼
>>> # 可以保存到文件里,下次不需要再次轉譯
>>> print(js2py.translate_js('var x = 1'))
from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var)
# Code follows:
var.registers(['x'])
var.put('x', Js(1.0))
來源:忘記了