不使用浏览器运行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 相关文章推荐
JavaScript的document对象和window对象详解
Dec 30 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
js中文逗号转英文实现
Feb 11 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
jQuery防止重复绑定事件的解决方法
May 14 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 Javascript
Element el-button 按钮组件的使用详解
Feb 01 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
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
vue实现拖拽进度条
2021/03/01 Vue.js
Python入门篇之正则表达式
2014/10/20 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
校园广播稿500字
2014/02/04 职场文书
2014年超市工作总结
2014/11/19 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
golang定时器
2022/04/14 Golang
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS