Time not enough to read every detail, but I found it great that most of my
points are covered in the Wiki, code splitting, file hashing, async loading.

However I think it's not we current have for all ClojureScript users, since
it's implemented by yourself based on lein, like hashing
https://github.com/thheller/shadow-devtools/blob/de6ede2add891aa798a3109c596ecafefdff94fe/src/main/shadow/cljs/devtools/targets/browser.clj#L235-L237
I'm
a Boot user, and it became a problem.

I heard about goog.module.ModuleManager before but never thought I could
make use of it given that fact it was poorly documented... Your project is
cool.

On Fri, May 12, 2017 at 9:23 PM Thomas Heller <th.hel...@gmail.com> wrote:

> I wrote some things down here:
>
> https://github.com/thheller/shadow-devtools/wiki/ClojureScript-for-the-browser#productionrelease-builds
>
> Code splitting is done by the :modules, whether or not you want to use the
> loader is up to you. I personally don't but that is because I have a rather
> traditional website that actually has different pages and I can determine
> which modules are needed based on the page. If you have an actual SPA you
> probably want to use the loader.
>
> :module-hash-names and :bundle-foreign are the caching bits. I just added
> the :module-hash-names since that was still in my private build config, but
> that was in use for about 3 years.
>
>
> I had an idea for webpack, I'll let you know if it works out.
>
>
> On Friday, May 12, 2017 at 1:46:32 PM UTC+2, Jiyin Yiyong wrote:
> > I used ClojureScript for a year. Probably there are tricks from Closure
> Compiler that I have no idea.
> >
> >
> > For the size, I saw some of the sites I often use have large JavaScript
> size(with Disable Cache ticked):
> >
> >
> > weibo.com 1.2M
> >
> >
> > Twitter 437K
> > teambition.com 1.9M
> >
> >
> >
> > I don't think 84k is a very big deal, while it is for smaller websites.
> Besides, we may cache and sure the cljs.core.js part, we may use Prepack in
> the future. In my case it's tolerable.
> >
> >
> > Today, using tools like
> https://github.com/facebookincubator/create-react-app and
> https://github.com/vuejs/vue-cli we almost get long time caching and code
> splitting with only several lines of code, with assets(images, fronts)
> bundling out of box. Hard to imagine we sell those people ClojureScript
> without competitive features.
> >
> >
> > It would still be awesome if you can share about code splitting and
> permanent caching in ClojureScript :)
> >
> >
> > On Fri, May 12, 2017 at 4:55 PM Thomas Heller <th.h...@gmail.com> wrote:
> > I'm way too biased towards the Closure Compiler and giving that up is
> simply not an option for me. I am however very interested in making things
> simpler for everyone.
> >
> >
> >
> >
> https://github.com/thheller/shadow-devtools/wiki/ClojureScript-for-node.js-libraries
> >
> >
> >
> > This is an example of how I intend to do that for node libraries, ie.
> something you just require. This actually bundles things up in a UMD format
> so the same can work for non-node environments. I would happily add a
> :browser-umd target that solves some of the issues for webpack users.
> >
> >
> >
> >
> https://github.com/thheller/shadow-devtools/wiki/ClojureScript-for-the-browser
> >
> >
> >
> > I have used the underlying shadow-build for over 3 years now to do
> code-splitting with permanent caching of generated files (ie. each
> generated file has a unique name). I also recently added the :module-loader
> which lets you async load modules on demand.
> >
> >
> >
> > Not sure what asset bundling does so no comment on that.
> >
> >
> >
> > I can't do anything about the JVM. I have been using it for too long so
> I may be blind to the issues people are having with it. It isn't that bad?
> >
> >
> >
> > I would say there is actually a good solution to the issues you mention.
> They just aren't available in the "mainstream" tools and I suck at writing
> documentation. I'm happy to provide examples any time but need help with
> the writing.
> >
> >
> >
> > Coming back to the webpack loader: I have a few ideas how I would write
> such a thing. The issue I see, and why I don't, is that the end result is
> bad. CLJS is built very much with the GCL in mind. cljs/core.js is 1.2MB
> (151KB gzip) unoptimized. One large file is very non-idiomatic npm/webpack.
> That also does not contain any user code. UglifyJS is able to shorten some
> of the code but you still keep about 84K gzip'd. To me that is unacceptable.
> >
> >
> >
> > Web-targeted JS needs to be optimized as much as possible and currently
> that means using the GCL. I don't want to create a "simple" solution that
> sacrifices this just to make dev-time easier.
> >
> >
> >
> > I have been CLJS first for too long now to imagine which issues people
> are having who are webpack first. Happy to discuss ideas or proposals.
> Maybe there are ways (like the :node-library, :node-script) that could work
> even in :advanced mode.
> >
> >
> >
> >
> >
> >
> >
> > On Friday, May 12, 2017 at 5:57:58 AM UTC+2, Jiyin Yiyong wrote:
> >
> > > It would be nice if we can require ClojureScript in JavaScript, and
> let Webpack to handle so many issues.
> >
> > >
> >
> > >
> >
> > > For Webpack use cases, I tried to sell ClojureScript to other
> front-end developers around me, but saw some problems:
> >
> > >
> >
> > >
> >
> > > * IMPORTANT: hard to install JVM. For JavaScript projects, installing
> Node.js(with npm inside) would be okay. It's very hard for JavaScript
> developers to pick up JVM and Boot(or Leiningen).
> >
> > > * IMPORTANT: long time caching and code splitting. We use these
> features in production for years. But I don't see a good solution in
> ClojureScript.
> >
> > > * Async code loading. For large projects some code can be loaded when
> a router is activated. No good solution found in ClojureScript.
> >
> > > * Assets bundling. Now we rely on Webpack to do that, result in using
> 2 tools.
> >
> > >
> >
> > >
> >
> > > Not sure if they can be solved if we have a ClojureScript running on
> Webpack. But there are many compiled-to-js languages support those features
> in by supporting Webpack already. That's the purpose behind the post.
> >
> > >
> >
> > >
> >
> > > Didn't try `node-jre`. I'm guessing we still need to debug JVM stuffs
> since it's running JVM?
> >
> > >
> >
> > >
> >
> > > On Fri, May 12, 2017 at 6:11 AM Shaun LeBron <shaunew...@gmail.com>
> wrote:
> >
> > > On Wednesday, May 10, 2017 at 11:45:02 PM UTC-5, Jiyin Yiyong wrote:
> >
> > >
> >
> > > > Already an old boring topic... I'm from JavaScript side and so many
> people are building apps with Webpack. And so many of alt-js languages got
> Webpack loaders:
> >
> > >
> >
> > > >
> >
> > >
> >
> > > > BuckleScript https://github.com/rrdelaney/bs-loader
> >
> > >
> >
> > > > PureScript https://github.com/ethul/purs-loader
> >
> > >
> >
> > > > Elm https://github.com/elm-community/elm-webpack-loader
> >
> > >
> >
> > > > Fable https://github.com/fable-compiler/Fable
> >
> > >
> >
> > > >
> >
> > >
> >
> > > > Exception:
> >
> > >
> >
> > > >
> >
> > >
> >
> > > > No Webpack for ReasonML
> https://github.com/chenglou/reason-react-example/blob/master/webpack.config.js
> >
> > >
> >
> > > >
> >
> > >
> >
> > > > Can we make a loader for ClojureScript?
> >
> > >
> >
> > > >
> >
> > >
> >
> > > > Or how about the possibility? I guess Closure Compiler will get in
> the why. But is it possible if I don't use dead code elimination from
> Closure Compiler? I know many people need it but seriously no other
> solutions? And how much does ClojureScript depend on Closure Library?
> >
> > >
> >
> > >
> >
> > >
> >
> > > I'm from the JS side as well, so I'm glad to see this question!  Are
> you imagining something like the following?  We should probably start by
> imagining why someone would want to require cljs this way and if it would
> even make sense to:
> >
> > >
> >
> > >
> >
> > >
> >
> > > ```
> >
> > >
> >
> > > require('cljs!./src-cljs') // return all goog.provided namespaces?
> >
> > >
> >
> > > require('cljs!./src-cljs/foo/core.cljs') // return a single
> goog.provide namespace?
> >
> > >
> >
> > > ```
> >
> > >
> >
> > >
> >
> > >
> >
> > > Either way I think it would need Closure Compiler to return a single
> asset for each require statement, if I understand webpack correctly.
> >
> > >
> >
> > >
> >
> > >
> >
> > > It's worth mentioning that the recent "node-jre" package allows users
> to install/use the full cljs JVM compiler in its fully glory through npm
> without any external dependencies, which I've tested here:
> https://github.com/cljs/tool
> >
> > >
> >
> > >
> >
> > >
> >
> > > I think it's possible—just unsure of webpack use-cases.  Thoughts?
> >
> > >
> >
> > >
> >
> > >
> >
> > > --
> >
> > >
> >
> > > 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/HNuYCfPRtQw/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 https://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 a topic in the
> Google Groups "ClojureScript" group.
> >
> > To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojurescript/HNuYCfPRtQw/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 https://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 a topic in the
> Google Groups "ClojureScript" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojurescript/HNuYCfPRtQw/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> clojurescript+unsubscr...@googlegroups.com.
> To post to this group, send email to clojurescript@googlegroups.com.
> Visit this group at https://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 clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.

Reply via email to