如何让ScriptEngine运行多个javascript文件?

发布于 2024-12-15 03:30:14 字数 139 浏览 3 评论 0原文

我有 6 个 js 文件,我需要将它们全部包含到最终脚本中以传递 ScriptEngine 的 eval 方法。我该怎么做? ScriptEngine 没有 add() 方法。我可以使用 FileReader 读取它们,然后连接这些字符串,但我认为会有更好的方法。

I have 6 js files and I need to include them all into final script to pass ScriptEngine's eval method.How can I do it? ScriptEngine haven't add() method.I can read them with FileReader and than concatenate those strings but I think there will be a better way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘落散花 2024-12-22 03:30:14

您可以使用重载 eval(Reader) 以避免自己将脚本加载到 String 中。

You can use the overload eval(Reader) to avoid having to load scripts into a String yourself.

淡紫姑娘! 2024-12-22 03:30:14

您可以使用一个脚本来调用其他 6 个脚本。

示例:

function callOtherFunctions() {
   functionOne();
   functionTwo();
   .
   .
   .
   functionSix();
}

不能 100% 确定该解决方案的效果如何,但它会调用所有其他 6 个函数。

You could use one script to call the other 6 scripts.

Example:

function callOtherFunctions() {
   functionOne();
   functionTwo();
   .
   .
   .
   functionSix();
}

Not 100% sure how good that solution will work but it will call all other 6 functions.

完美的未来在梦里 2024-12-22 03:30:14

使用相同的 ScriptContext 多次运行 eval。

在下一个示例中,我需要在运行 MainScript.js 之前运行 Utils.js 脚本,因为 Utils.js 正在定义 MainScript.js 中我需要的一些函数,我始终认为此顺序是这些脚本在 HTML 页面中出现的方式我要在浏览器中执行此操作:

    String scriptsUtilsFilePath = "src/test/resources/scripts/Utils.js";
    String mainScriptFilePath = "src/test/resources/scripts/MainScript.js";

    // Get the script engine manager
    ScriptContext newContext = new SimpleScriptContext();
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("nashorn");// Newest Javascript engine

    // Run Utils
    engine.eval(new FileReader(scriptsUtilsFilePath), newContext);

    // Run the Main Script
    engine.eval(new FileReader(mainScriptFilePath), newContext);

Run eval multiple times using the same ScriptContext.

In the next example I need to run Utils.js script before running MainScript.js because Utils.js is defining some functions I need in MainScript.js, I always think of this order as the way these scripts will appear in an HTML page of I were to execute this in a browser:

    String scriptsUtilsFilePath = "src/test/resources/scripts/Utils.js";
    String mainScriptFilePath = "src/test/resources/scripts/MainScript.js";

    // Get the script engine manager
    ScriptContext newContext = new SimpleScriptContext();
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("nashorn");// Newest Javascript engine

    // Run Utils
    engine.eval(new FileReader(scriptsUtilsFilePath), newContext);

    // Run the Main Script
    engine.eval(new FileReader(mainScriptFilePath), newContext);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文