Sorry. Small correction:
callback["Run My Code Please"] = begin
println("Ok! I will run your code.")
# Your code here.
end
should be (of course):
callback["Run My Code Please"] = () -> begin
println("Ok! I will run your code.")
# Your code here.
end
On Thursday, January 7, 2016 at 5:25:45 PM UTC+8, Eric Forgy wrote:
>
> Hi,
>
> Yesterday, I posted a link to a new package StringInterpolation
> <https://groups.google.com/d/msg/julia-users/3IRDXQgb34g/9Uht7g8PAQAJ>.
> That was a warmup for this one :)
>
> JuliaJS started life as PlotlyJS
> <https://groups.google.com/d/msg/julia-users/ix5fxt68rwM/NaIUGk0MCQAJ>
> providing
> an interface from Julia to the recently open-sourced plotly.js
> <https://plot.ly/javascript/>. By the time I finished PlotlyJS, there
> wasn't really much "Plotly"-specific about it and I changed the name to
> make way for Spencer's cool PlotlyJS package
> <https://github.com/spencerlyon2/PlotlyJS.jl> (which I think these two
> packages can work happily together btw).
>
> JuliaJS is HEAVILY inspired by the awesome Blink
> <https://github.com/JunoLab/Blink.jl> package, but there is no dependence
> on Atom/Electron.
>
> One thing I like about JuliaJS, other than being able to use string
> interpolation with JS commands, is the ease at which the two-way
> communication works. For example, you can define a callback in Julia like
> so:
>
> callback["Run My Code Please"] = begin
> println("Ok! I will run your code.")
> # Your code here.
> end
>
> Then, on the JavaScript side:
>
> JuliaJS.message("Run My Code Please")
>
> and guess what it does? :)
>
> I'm still learning Julia so I'm sure there are plenty of bugs and a ton of
> ways to do things better, so feedback, issues, PRs are most welcome.
>
> From the README:
>
> https://github.com/EricForgy/JuliaJS.jl
>
> Warning: This package is still very early in development. Feedback, issues
> and PRs are most welcome.
>
> *JuliaJS.jl*
>
> This is simple package that allows Julia to interact with JavaScript in a
> browser.
>
> *Installation*
>
> JuliaJS is not registered and it requires another unregistered package:
> StringInterpolation. To install, you'll need to run the following commands:
>
> julia> Pkg.clone("https://github.com/EricForgy/StringInterpolation.jl.git"
> )
> julia> Pkg.clone("https://github.com/EricForgy/JuliaJS.jl.git")
>
> *Usage Example:*
>
> After installation, running the following from the Julia REPL
>
> julia> using JuliaJS
> Listening on 0.0.0.0:8000...
>
> will start an HttpServer. Open your browser to http://localhost:8000/julia
> and you should see a blank page with "JuliaJS" in the browser tab.
>
> With the browser open, run the following:
>
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
>
> If the stars are aligned, you should see several sample charts appear in
> the browser window.
>
> *Notes:*
>
> *Interpolation*
>
> The non-standard string literal `js` supports interpolation, but at the
> moment, the Julia expression needs to be enclosed in parentheses, e.g.
> instead of
>
> julia> msg = "Hello World"
> julia> js"""
> console.log("$msg")
> """
>
> you will need to enclose `msg` in parentheses as illustrated below:
>
> julia> msg = "Hello World"
> julia> js"""
> console.log("$(msg)")
> """
>
> *WebSockets*
>
> JuliaJS creates an active link between Julia and your browser via
> WebSockets so you can update your charts from Julia without reloading the
> page. To see this, try rerunning the above example several times:
>
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
>
> Each time you run from the REPL, the charts are updated without having to
> reload.
>
> A fun artifact of using WebSockets is that you can "broadcast" your charts
> to several browsers and they will all get updated interactively. Here is a
> silly
> video <https://www.youtube.com/watch?v=mWDyyfVNqP0> demonstrating three
> browsers (including an iPhone) with charts being interactively controlled
> from the Julia REPL.
>