There is no compilation of Julia code into JavaScript. At the cost of simplifying, you essentially manipulate a shadow DOM in Julia, that generates the corresponding HTML. And browser events are delivered to Julia using reactive signals.
So yes, I suppose you could say that it is all "driven" from the server. On Tuesday, 9 June 2015 14:01:43 UTC+1, Sebastian Good wrote: > > Looks pretty interesting and in line with a lot of current web framework > thinking. Are there any pieces inside Escher which help with compiling > Julia code to JavaScript? Or is it all "driven" from the server? > > On Monday, June 8, 2015 at 12:23:21 PM UTC-4, Shashi Gowda wrote: >> >> Hello all! >> >> I have been working on a package called *Escher* over the past several >> months. >> >> It is now quite feature-rich and ready to use in some sense. I put >> together an overview here: >> >> https://shashi.github.io/Escher.jl/* >> >> My aim is to converge at a UI toolkit that any Julia programmer can use >> to create rich interactive GUIs and deploy them over the web, *within >> minutes*. >> >> Escher simplifies the web platform into a simple and pleasant pure-Julia >> library. You don't need to learn or write HTML or CSS or JavaScript. Many >> problems associated with traditional web development basically disappear. >> There is no need to write separate front-end and back-end code, layouts are >> tractable and similar to layouts in the original TeX. Communication is done >> under-the-hood as and when required. No boiler plate code. Things just look >> great by default. >> >> Briefly, here is how Escher works under the hood: >> >> - A UI is an immutable Julia value that is converted to a Virtual DOM >> <http://en.wikipedia.org/wiki/React_%28JavaScript_library%29#Virtual_DOM> >> using the Patchwork <https://github.com/shashi/Patchwork.jl> library. >> Compose graphics and Gadfly plots also get rendered to Virtual DOM as >> well. >> - Subsequent updates to a UI are sent as patches to the current UI over a >> websocket connection >> - Input widgets send messages to the server over the same websocket >> connection >> - Complex things like tabs, slideshows, code editor, TeX and dropdown >> menus are set up as custom HTML elements using the Web Component >> <http://webcomponents.org/> specification, mainly using the Polymer >> library <http://polymer-project.org/>. These things are just Virtual DOM >> nodes in the end. >> >> >> This is still a work in progress, I am very happy to receive any critique >> on this thread, and bug reports on Github >> <https://github.com/shashi/Escher.jl>. I am very excited to see what you >> will create with Escher. >> >> Thanks! :) >> Shashi >> >> * - Escher uses some bleeding-edge Web features, this page might not work >> so well on Safari, should work well on a decently new Chrome, and on >> Firefox if you wait for long enough for all the assets to load. I will be >> fixing this in due time, and also working on a cross-browser testing >> framework. >> >> PS: I have been dealing with RSI issues of late and my hands will >> appreciate any help with expanding the documentation! See >> https://github.com/shashi/Escher.jl/issues/26 if you wish to help. >> >