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.
>>
>

Reply via email to