不使用浏览器运行javascript代码的方法


Posted in Javascript onJuly 24, 2013

有时候我们想用js写一段小程序,但是又觉得使用浏览器去运行挺麻烦的,那么现在我们来看一下如何使用java程序调用javascript程序,这样就可以不借助浏览器就可执行js代码了。

之所以有这个需求是因为这几天在做的一个项目中碰到了这样的问题,我有一个javascript脚本,但是这个项目的其他代码都是用C\C++写的,不想将js代码转成C,感觉太麻烦了,所以就想如果可以在C下面直接调用javascript代码就好了,或者在shell中有一个可以不借助浏览器就可以直接运行js代码的工具也行。现在可以使用java代码调用javascript代码也行吧,可以写一个shell 脚本封装一下就可以直接在shell下面运行js代码了。

首先如果要安装好java。

java代码如下:

import java.io.FileReader; 
import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
public class RunScriptFile { 
public static void main(String[] args) { 
ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js"); 
try { 
FileReader reader = new FileReader("testFile.js"); 
engine.eval(reader); 
reader.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
}

例如要运行的js代码如下:

function add(a, b) { 
c = a + b; 
return c; 
} 
result = add (10, 5); 
print ('Result = ' + result);

然后在shell中运行:

javac RunScriptFile.java
java RunScriptFile

生成结果如下:

Result = 15

Javascript 相关文章推荐
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
javaScript语法总结
Nov 25 Javascript
js实现点击每个li节点,都弹出其文本值及修改
Dec 15 Javascript
vue-router单页面路由
Jun 17 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
Vue切换Tab动态渲染组件的操作
Sep 21 Javascript
js展开闭合效果演示代码
Jul 24 #Javascript
火狐textarea输入法的bug的触发及解决
Jul 24 #Javascript
当前页禁止复制粘贴截屏代码小集
Jul 24 #Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 #Javascript
javascript中比较字符串是否相等的方法
Jul 23 #Javascript
js改变img标签的src属性在IE下没反应的解决方法
Jul 23 #Javascript
js如何实现设计模式中的模板方法
Jul 23 #Javascript
You might like
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
javascript的BOM汇总
2015/07/16 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
对numpy中轴与维度的理解
2018/04/18 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Python类继承和多态原理解析
2020/02/05 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
老师的检讨书
2014/02/23 职场文书
预备党员承诺书
2014/03/25 职场文书
清洁工岗位职责
2015/02/13 职场文书
海底两万里读书笔记
2015/06/26 职场文书
2016新年年会主持词
2015/07/06 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android