There is no such thing as being advanced compilation compatible with Closure without supplying an externs file.
You must supply an externs file for FastClick. David On Sat, Feb 21, 2015 at 9:51 AM, Alan MacDougall <[email protected]> wrote: > My specific problem involves fastclick.js, but I hope the question is of > general interest to anyone using :foreign-libs. > > I tried using fastclick.js in my project through :foreign-libs, with these > compilation settings: > > :foreign-libs [{:file "resources/vendor/fastclick/fastclick.min.js" > :provides ["FastClick"]}] > > And required it: > > (ns my-project.core > (:require ; ... rest of require statements > [FastClick])) > > And finally invoked it at the root of my Om app: > > (defn main [] > (.attach js/FastClick (.-body js/document)) > (om/root main-view > app-state > {:target (. js/document (getElementById "app"))})) > > > Luke Vanderhart's comprehensive article[1] says "defining a namespace for > a file using :foreign-libs doesn't actually scope any variables the library > creates - if the library is built to insert a Foobar object at the global > JavaScript context, for example, you'd still need to refer to it at the > global context with js/Foobar, not namespace/Foobar" > > This is how FastClick works. With {:optimizations :none}, everything is > fine; but with {:optimizations :advanced}, although FastClick is added to > the global scope with un-munged method names, my code uses a munged method > name. It attempts to call FastClick.Td. > > FastClick is compatible with advanced compilation[2], so I don't think > that's the issue. Is there something else I can do to preserve the correct > references? > > For now, I'm just adding fastclick in a script tag in my HTML and > supplying externs, which is honestly fine, but it would be cool to get the > full benefit of advanced compilation. > > > [1] > http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html > [2] https://github.com/ftlabs/fastclick/issues/1 > > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/clojurescript. > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
