在我的Android应用程序中,我使用Kotlin成功地解析和评估了一个javascript文件。
val file_name = "lib.js"
val js_string = application.assets.open(file_name).bufferedReader().use {
it.readText()
}
val duktape = Duktape.create()
try {
Log.d("Greeting", duktape.evaluate("'hello world'.toUpperCase();").toString())
duktape.evaluate(js_string)
} finally {
duktape.close()
}javascript文件是使用Browserify创建的,因此它是一个包含所有内容的单一文件,并且工作正常。但是我需要从模块中请求一个模块和一个方法,例如:
var test = require('testjs-lib');
test.EVPair.makeRandom().toWTF();我不知道怎么做,也没有找到任何例子,除了这个链接:http://wiki.duktape.org/HowtoModules.html
它告诉我使用modsearch,但我不知道该怎么做,也不知道应该把它放在哪里,即使它适用于Duktape Android (https://github.com/square/duktape-android)。
有没有人成功地做了这件事,可以为这件事提供一些线索?
发布于 2018-04-23 23:08:01
在testjs-lib.js中,添加使用模块testjs-lib.js本身导出的JS代码。例如:
function myModule() {
this.hello = function() {
return 'hello!';
}
this.goodbye = function() {
return 'goodbye!';
}
}
module.exports = myModule;
//You code goes here
console.log(myModule.hello());
console.log(myModule.goodbye());然后让Duktape评估整个文件。
发布于 2018-06-19 22:39:14
假设您想要在duktape中包含Underscore。
Assets文件夹中。在我们的示例中,应该是这样的:underscore.js```javascript公共接口DuktapeHelper {
@JavascriptInterfaceString getUnderScore();}
```javascriptduktape.bind("helper",DuktapeHelper.class,);
helper接口在duktape中实现modSearch函数。```javascriptduktape.evaluate("Duktape.modSearch =函数(id) {\n“+
" if (id == \"underscore\") {" + " return helper.getUnderScore();" + " } " + " throw new Error('cannot find module: ' + id);" + " };" + "var _ = require('underscore')._; ");https://stackoverflow.com/questions/49851354
复制相似问题