python如何运行js语句


Posted in Python onSeptember 09, 2020

1. 安装

pip install PyExecJS  # 需要注意, 包的名称:PyExecJS

2. 简单使用

import execjs
execjs.eval("new Date")
返回值为: 2018-04-04T12:53:17.759Z
execjs.eval("Date.now()")
返回值为:1522847001080  # 需要注意的是返回值是13位, 区别于python的time.time()

需要注意的是: 个别的JS语句, 用execjs返回的结果跟浏览器环境返回的结果是有区别的, 以下是浏览器环境返回的结果:

python如何运行js语句

3. 调用函数

# 实际生产中处理的js有几百几千行, 不方便贴上来。来看一下源码中给的例子:
  ctx = execjs.compile("""
        function add(x, y) {
                return x + y;
           }
""")
  ctx.call("add", 1, 2)  # 第一个参数 “add” 为JS函数名的字符串, 后边依次为实参
  返回值:3

execjs的用法非常简单, 下边来看一下执行JS的环境, 以及性能:

4. 执行JS的环境

在windows上不需要其他的依赖便可运行execjs, 也可以调用其他的JS环境

windows 默认的执行JS的环境
execjs.get().name
返回值: JScript
作者本人的windows上装有Node.js , 所以返回值不同
execjs.get().name
返回值: Node.js (V8)

在ubuntu下需要安装执行JS环境依赖, 作者的环境为PhantomJS

execjs.get().name
返回值: PhantomJS

源码中给出, 可执行execjs的环境:

PyV8         = "PyV8"
Node         = "Node"
JavaScriptCore    = "JavaScriptCore"
SpiderMonkey    = "SpiderMonkey"
JScript       = "JScript"
PhantomJS      = "PhantomJS"
SlimerJS       = "SlimerJS"
Nashorn       = "Nashorn"

在ubuntu环境下,没有JS环境会报错:Could not find an available JavaScript runtime. 由此可见,execjs在ubuntu需要安装JS环境 。具体的JS环境需根据具体的需求安装, 切不可超过以上8种。

5.环境切换

通过os.environ

os.environ["EXECJS_RUNTIME"] = "Node"
execjs.get().name
execjs.eval("1 + 2")

通过execjs.get 切换

jscript = execjs.get(execjs.runtime_names.JScript)  # runtime_names 便是execjs源码中给出的执行环境的。 
execjs.runtime_names.xxx  xxx必须在上一节 #3中取
jscript.eval("1 + 2")

注: 在切换环境时, 当环境不存在不会报错, 会使用默认的环境。 另外需要注意的是, 两种方式的区别

6. 简易性能分析

# 只简单试了三种, 在windows下
import  execjs
import os
import time
# 先用JScript
os.environ["EXECJS_RUNTIME"] = "JScript"
print execjs.get().name
time1 = time.time()
for i in range(100):
    execjs.eval("new Date")
print time.time() - time1
# 切换环境 使用Nodejs
os.environ["EXECJS_RUNTIME"] = "Node"
print execjs.get().name
time2 = time.time()
for l in range(100):
    execjs.eval("new Date")
print time.time() - time2
# 打印的结果为:
JScript
4.70900011063
Node.js (V8)
27.501999855
# 在ubuntu下试的是PhantoJS , 结果竟然高达 30+ S

以上就是python如何运行js语句的详细内容,更多关于python运行js语句实例的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python3实现ftp服务功能(服务端 For Linux)
Mar 24 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
python微信撤回监测代码
Apr 29 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
Python函数参数类型及排序原理总结
Dec 19 Python
信号生成及DFT的python实现方式
Feb 25 Python
通过自学python能找到工作吗
Jun 21 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 Python
python如何爬取动态网站
Sep 09 #Python
python如何停止递归
Sep 09 #Python
python能做哪些生活有趣的事情
Sep 09 #Python
Python 连接 MySQL 的几种方法
Sep 09 #Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 #Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 #Python
Python列表推导式实现代码实例
Sep 09 #Python
You might like
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
javascript globalStorage类代码
2009/06/04 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
拖动时防止选中
2017/02/03 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
浅析Python中signal包的使用
2015/11/13 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
中专毕业自我鉴定
2013/10/16 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
论文指导教师评语
2014/04/28 职场文书
英文商务邀请函范文
2015/01/31 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
廉洁自律证明
2015/06/24 职场文书
投诉信格式范文
2015/07/02 职场文书
运动会广播稿200字
2015/08/19 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
Golang Web 框架Iris安装部署
2022/08/14 Python