Szukam sposobu na zdefiniowanie funkcji Clojurescript w globalnej przestrzeni nazw Javascript podczas kompilacji. Co mam na myśli przez czas kompilacji, to że chcę, aby kompilator Clojurescript wyprowadzał to: function some_fn() { }
. Wiem, że to nie jest idiomatyczne i wszystko powinno znajdować się w przestrzeni nazw, ale środowisko, w którym się znajduję, zmusza mnie do zrobienia tego. Tak więc, najlepiej jak coś takiego, jak (defn ^:global some-fn [])
, które działa podobnie do tego, jak działa :export
, ale ignoruje przestrzeń nazw.Jak zdefiniować funkcję clojurescript w globalnej przestrzeni nazw javascript podczas kompilacji?
Jestem świadomy metody środowiska wykonawczego do definiowania globalnych funkcji przy użyciu goog.global, np. (set! goog.global.someFunction some-clojure-fn)
, ale to nie działa w moim środowisku.
Czy zdajesz sobie sprawę, że jeśli opisywanie swoją funkcję z '^: export' można zwrócić się do niego bezpośrednio z javascript? na przykład 'my.name.space.some_fn()' –
Tak, jestem. Obawiam się, że naprawdę chcę, aby była to funkcja najwyższego poziomu, ponieważ nie radzę sobie z plikami name.space.prefix. –
Odpowiedź Kanaki jest tym, o co prosisz. Okno to miejsce, w którym żyjemy na najwyższym poziomie. –