[ANN] Browserific, cross-platform app development in cljs

183 views
Skip to first unread message

Ed Babcock

unread,
Mar 23, 2015, 4:50:05 AM3/23/15
to clojur...@googlegroups.com
Here is the first release of a few app development tools I've been
working on:


Browserific - App development framework for mobile, desktop, and browser
extensions. https://github.com/greenyouse/browserific

Chenex - New feature expression parser (an alternative to cljx).
https://github.com/greenyouse/chenex

pldb-cache - A persistent, client-side database that uses core.logic's
pldb. https://github.com/greenyouse/pldb-cache


Most of the software is alpha quality or earlier but it's still
usable. The biggest problem is probably that pldb-cache uses WebStorage
instead of an IndexedDB/WebSQL/WebStorage polyfill. Chenex also can't
handle tagged literals quite yet.

To help get a feel for what these projects offer, I wrote a blog post on
app development stuff (http://edbabcock.com/app-hacking.html). Between
that and the READMEs I think everything is explained decently well.

Let me know what you think!

Ivan L

unread,
Mar 25, 2015, 4:51:56 PM3/25/15
to clojur...@googlegroups.com
Chenex makes me a curious - can you define any target you want? For example, say I want to slice between :nodejs vs :nashorn in a clojurescript target?

Ivan L

unread,
Mar 25, 2015, 4:59:30 PM3/25/15
to clojur...@googlegroups.com
Also, you don't need a difference in require methods provided the clojurescript version is greater than one of the ones released recently. So long as your namespace declares the macros in itself via :require-macros, you can require the macro namespace like a clojure require in cljs. (phew)

Ed Babcock

unread,
Mar 26, 2015, 12:44:16 AM3/26/15
to clojur...@googlegroups.com
> can you define any target you want?

Yes, that was the main motivation. I would have used cljx but it wasn't compatible with anything but clojure and clojurescript.

> say I want to slice between :nodejs vs :nashorn in a clojurescript target?

To declare a new target, change the :features and :output-path. Try this:

[{:source-paths ["src"],
  :output-path "target/generated/nodejs",
  :rules
  {:filetype "cljs",
   :features #{:nodejs},
   :inner-transforms [],
   :outer-transforms []}}
 {:source-paths ["src"],
  :output-path "target/generated/nashorn",
  :rules
  {:filetype "cljs",
   :features #{:nashorn},
   :inner-transforms [],
   :outer-transforms []}}]


On Wed, Mar 25, 2015 at 3:59 PM, Ivan L <ivan.l...@gmail.com> wrote:
Also, you don't need a difference in require methods provided the clojurescript version is greater than one of the ones released recently.  So long as your namespace declares the macros in itself via :require-macros, you can require the macro namespace like a clojure require in cljs.  (phew)

--
Note that posts from new members are moderated - please be patient with your first post.
---
You received this message because you are subscribed to a topic in the Google Groups "ClojureScript" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojurescript/I8HztgWsc9w/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojurescrip...@googlegroups.com.
To post to this group, send email to clojur...@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Ed Babcock

unread,
Mar 26, 2015, 6:38:33 AM3/26/15
to clojur...@googlegroups.com
That change to :require was a good idea. I also just saw that the browserific-app template and some other stuff were way out of date. Fixed both of these things so now everything should work a little better. Sorry if you tried it out and it broke right away.

Ivan L

unread,
Mar 26, 2015, 10:13:43 AM3/26/15
to clojur...@googlegroups.com
Have not tried it yet but I will! The feature expression concept is very attractive to me lately especially since I've been targeting cljs and clj but I will want to expand soon to android and ios.
Reply all
Reply to author
Forward
0 new messages