不使用浏览器运行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语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
jquery实现轮播图效果
Feb 13 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 Javascript
javascript canvas时钟模拟器
Jul 13 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
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比较多维数组中值的大小排序实现代码
2012/09/08 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
Javascript - HTML的request类
2007/01/09 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
js实现select下拉框选择
2020/01/11 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
python中的数据结构比较
2019/05/13 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
人力资源管理毕业生自荐信
2013/11/21 职场文书
护士演讲稿范文
2014/01/05 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
质量月活动策划方案
2014/03/10 职场文书
安全生产月活动总结
2014/05/04 职场文书
文明寝室申报材料
2014/05/12 职场文书