java中rhino什么用_使用require.js和Java / Rhino解析模块
小编典典
require.js在rhino上运行良好。最近,我在一个项目中使用了它。
您必须确保使用r.js(不是require.js),犀牛的require.js的修改版本。
您必须扩展ScritableObject类才能实现load和print运行。调用时require(["a"]),将调用此类中的load函数,您可以调整此函数以从任何位置加载js文件。在以下示例中,我从加载classpath。
您必须arguments在sharedscope中定义属性,如下面的示例代码所示
(可选)您可以使用配置子路径require.config,以指定classpath内js文件所在的子目录。
JsRuntime支持
public class JsRuntimeSupport extends ScriptableObject {
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(JsRuntimeSupport.class);
private static final boolean silent = false;
@Override
public String getClassName() {
return "test";
}
public static void print(Context cx, Scriptable thisObj, Object[] args,
Function funObj) {
if (silent)
return;
for (int i = 0; i < args.length; i++)
logger.info(Context.toString(args[i]));
}
public static void load(Context cx, Scriptable thisObj, Object[] args,
Function funObj) throws FileNotFoundException, IOException {
JsRuntimeSupport shell = (JsRuntimeSupport) getTopLevelScope(thisObj);
for (int i = 0; i < args.length; i++) {
logger.info("Loading file " + Context.toString(args[i]));
shell.processSource(cx, Context.toString(args[i]));
}
}
private void processSource(Context cx, String filename)
throws FileNotFoundException, IOException {
cx.evaluateReader(this, new InputStreamReader(getInputStream(filename)), filename, 1, null);
}
private InputStream getInputStream(String file) throws IOException {
return new ClassPathResource(file).getInputStream();
}
}
样例代码
public class RJsDemo {
@Test
public void simpleRhinoTest() throws FileNotFoundException, IOException {
Context cx = Context.enter();
final JsRuntimeSupport browserSupport = new JsRuntimeSupport();
final ScriptableObject sharedScope = cx.initStandardObjects(browserSupport, true);
String[] names = { "print", "load" };
sharedScope.defineFunctionProperties(names, sharedScope.getClass(), ScriptableObject.DONTENUM);
Scriptable argsObj = cx.newArray(sharedScope, new Object[] {});
sharedScope.defineProperty("arguments", argsObj, ScriptableObject.DONTENUM);
cx.evaluateReader(sharedScope, new FileReader("./r.js"), "require", 1, null);
cx.evaluateReader(sharedScope, new FileReader("./loader.js"), "loader", 1, null);
Context.exit();
}
}
loader.js
require.config({
baseUrl: "js/app"
});
require (["a", "b"], function(a, b) {
print('modules loaded');
});
js/app 目录应该在您的类路径中。
2020-11-13
java中rhino什么用_使用require.js和Java / Rhino解析模块相关推荐
- java中execution的作用_一文初步了解Java虚拟机
大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...
- java中方法的具体化_我为什么要关心Java没有具体化的泛型?
问题 这是我最近在一次采访中提出的一个问题,即候选人希望看到添加到Java语言中的问题.它通常被认为是Java没有的痛苦reified generics但是,当被推动时,候选人实际上无法告诉我他在那里 ...
- java中 先进后出的集合_程序猿的日常——Java中的集合列表
列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再 ...
- java中compile函数用法_【转】关于java中Pattern.compile函数的相关解释
Pattern.compile函数:Pattern Pattern.compile(String regex, int flag) flag的取值范围如下: Pattern.CANON_EQ,当且仅当 ...
- java中strictfp么意思_什么时候应该在java中使用“strictfp”关键字?
Strictfp确保您从每个平台上的浮点计算获得完全相同的结果.如果不使用strictfp,JVM实现可以在可用的地方使用额外的精度. Within an FP-strict expression, ...
- java中抽象类继承抽象类_用Java中的抽象类扩展抽象类
java中抽象类继承抽象类 示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不 ...
- 在java中如何输入角度_在Java中获取角度的反余弦
为了获得Java中给定值的反余弦,我们使用java.lang.Math.acos()方法.该acos()方法接受需要计算角度的双精度值.返回的角度范围在0到pi之间.如果参数为NaN或大于1或小于-1 ...
- java中的进制输出转换_Java I/O : Java中的进制详解
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...
- java实现次方的运算_【技术干货】Java 面试宝典:Java 基础部分(1)
海牛学院的 | 第 616 期 本文预计阅读 |18 分钟 Java 基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法, ...
最新文章
- php控制器和路由机制,自制PHP框架之路由与控制器
- lofter 爬虫_200627 | Lofter格兰芬多标签日榜
- sca60c使用程序_第3部分:SCA应用程序的工作负载平衡的WebSphere MQ客户端连接
- linux 添加raid0驱动,网众linux添加新raid驱动.doc
- 普鸥知识产权|如何申请美国外观专利?申请费用、时间、流程?
- 百度AI开放平台学习——EasyDL经典版-图像分类模型训练与验证
- 计算机中插入背景图片怎样操作,如何将图片设置为Word页面背景?
- 快速识别图中文字的操作方法
- 解决方案:Browserslist:caniuse-lite is outdated. Please run next command `npm update`
- org.w3c.dom。 XML解析 练习
- SpringBoot项目中华为云 内容审核的使用(内附代码)
- 如何给深度学习加速——模型压缩、推理加速
- 今天和几个朋友交流个人品牌的看法
- java判断输入回车符_Java编程:获取用户是否输入回车符
- IT应届实习能不加班?如何逃离996?
- 网络摄像头python_Python OpenCV 调用网络摄像头
- 慕课离线下载视频支持电脑播放
- 哈工大计算机学院软件工程硕士,哈尔滨工业大学 2015年示范性软件学院软件工程硕士招生简章...
- 类与对象(中) 构造函数和析构函数
- 他从锅盔小贩到拉闸大亨,举步维艰终于发家致富
热门文章
- warning: control reaches end of non-void function:错误解决
- 基于typescript的rtsp客户端实现
- UE4之vs2019IntelliSense错误
- 深度学习自学(十七):caffe-sphereface-编译matcaffe遇到的问题
- 商务高端、CPU要求高-笔记本选型
- WordPress如何开启用户注册功能
- python都有哪些变量_Python变量作用域有哪些
- windows系统bat批处理 开机一键多个程序
- CSDN写博客图片的放大、缩小、去水印、居中
- mysql导出不带注释的sql语句_MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事