austin
austin copied to clipboard
Add support for adding JS dependencies.
When using a browser-connected REPL for Om, I'd love to be able to invoke Om functions to investigate their outputs and so forth. However this would require having the React object from react.js avaliable in the page. The default HTML generated by send-repl-index however is pretty minimal (by design).
I can think of a few ways to accomplish this:
- have some kind of additional config/hook in
profiles.cljto specify additional URLs (http or file system) for libs to include; - read from
:preambleand add the paths specified there as<script>tags; - same as above but just add those libs to the client.js
I "hacked in" a manner of doing this with this here:
(extend-type js/HTMLCollection
ISeqable
(-seq [array] (array-seq array 0)))
;; Bootstrap the DOM in a browser-connected REPL so ReactJS is available
(defn repl-react-js
"Add ReactJS to browser-connected REPl session."
[] (let [head (first (. js/document (getElementsByTagName "head")))
script (. js/document (createElement "script"))]
(set! (.-type script) "text/javascript")
(set! (.-src script) "http://fb.me/react-0.11.2.js")
(. head (appendChild script))))
I'm sure it's super-naive but it worked.