Ich möchte d3 Diagramme auf dem Server rendern. Ich hatte 3 Optionen: Knoten, Phantom und Nashorn.Laufende jsdom in Nashorn
Ich bevorzuge Nashorn, weil meine API ist Scala Play und ich möchte nicht einen anderen Prozess verwalten. (Bereitstellung, Laden, Warteschlange usw.)
Jetzt muss ich JSDom in Nashorn arbeiten, damit D3 etwas zu rendern haben wird.
Das funktioniert so weit, aber ich kann nicht herausfinden, wie 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)
}
}
Welche Probleme sind aufgetreten? jsdom hat viele Abhängigkeiten und diese haben wahrscheinlich auch Deps, also müssen Sie möglicherweise all diese manuell hinzufügen. Ich bin mir nicht sicher, aber ein Tool wie Browserify oder Webpack kann hier helfen (konvertieren Sie ein Modul zu im Grunde eine einzige js) ... – Salem
gut - Erhalt jsdom.js an erster Stelle. Es gibt keinen Download-Link. –
Ich habe eine vierte Option gefunden, typesafehub/webdriver verwendet Rhino und htmlunit. –