【发布时间】:2016-05-24 23:09:10
【问题描述】:
我想在服务器上渲染 d3 图表。我有 3 个选项:Node、Phantom 和 Nashorn。
我更喜欢 Nashorn,因为我的 API 是 Scala Play,我不想管理其他进程。 (部署、加载、队列等)
所以现在我需要让 JSDom 在 Nashorn 中工作,以便 D3 可以渲染。
到目前为止这有效,但我不知道如何添加 jsdom
class Application @Inject() (val messagesApi: MessagesApi) extends api.ApiController {
def test = ApiAction { implicit request =>
ok("The API is ready")
}
def pptx = Action { implicit request =>
val manager: ScriptEngineManager = new ScriptEngineManager
val engine: ScriptEngine = manager.getEngineByName("nashorn")
engine.eval(new FileReader(Play.getFile("/ext/lodash.js")))
val output = engine.eval("function hello(){return _.join('Hello world nashorn does this thing'.split(' '), '-');} hello();")
Ok(output.toString)
}
}
【问题讨论】:
-
你遇到了什么问题? jsdom 有很多依赖项,而且那些可能也有依赖项,所以你可能需要手动添加所有这些。我不确定,但是像 browserify 或 webpack 这样的工具可能会有所帮助(将模块转换为基本上单个 js)...
-
好吧 - 首先获得 jsdom.js。没有下载链接。
-
我找到了第四个选项,typesafehub/webdriver 使用 rhino 和 htmlunit。
标签: javascript scala d3.js playframework nashorn