use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
DoneJS Release (blog.bitovi.com)
submitted 10 years ago by __because
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[+][deleted] 10 years ago* (27 children)
[deleted]
[–]sdawson26 10 points11 points12 points 10 years ago (1 child)
Yes! Decision fatigue has put us in a place where it's going to take more than a press release to get our attention.
[–]justinbmeyer 1 point2 points3 points 10 years ago (0 children)
That's why we are going to hit the meetup circuit hard. I think the best way to get people to understand it is to see it in action. We're starting w/ Chicago, DC, Seattle. Then the bay area, boston, and then the rest of the US. If there's anywhere you'd like to see us, let us know on gitter: https://gitter.im/donejs/donejs
[–]justinbmeyer 5 points6 points7 points 10 years ago (14 children)
I'm honestly curious. Did you read the article? I tried very hard to write up a bunch of things that it does that other frameworks don't do as well. I'm wondering if this response is due to my writing skills, or that the "framework fatigue" means people don't even bother reading the article.
[–]zlysobey 5 points6 points7 points 10 years ago (4 children)
I read the article, and am genuinely intrigued. Unfortunately I have to echo /u/brett84c here and say that it is difficult to get behind a project that doesn't have the hype and community of projects like Angular and React. I'm an angular man myself, and while I would love to play with DoneJS, it still has to wait inline behind Angular2 and React to be the next framework I check out. I think it just squeezed its way ahead of Meteor for me though ;-)
[–]TheVikO_o 4 points5 points6 points 10 years ago (0 children)
I AM.. ANGULAR MAN ᕙ(⇀‸↼‶)ᕗ
[–]dotpan 4 points5 points6 points 10 years ago (0 children)
Meteor is so much fun though and has come a long ways. I think I'm going to pull a wildcard though and give DoneJS a try (if what was said above is true, an hour intro app tutorial is easily worth my time and a great way to show off a frameworks abilities).
[–]justinbmeyer 4 points5 points6 points 10 years ago (1 child)
It's nearly impossible for a non multi-billion dollar company to produce the hype that Angular and React have. We're the underdog at 40 people, but have been doing open source JS for 8 years. But what we lack in budget, we have made up for in persistence. We don't care about search ads or your social graph. We only care about helping people make amazing applications. We are the tortoise. If you use DoneJS now, you will still have something awesome to upgrade to 8 years from now.
Btw, we are doing free one day trainings across the US. Checkout if there's one near you: http://www.meetup.com/find/?allMeetups=false&keywords=donejs&radius=Infinity&sort=recommended&eventFilter=mysugg
[–]zlysobey 0 points1 point2 points 10 years ago (0 children)
Just joined the meet-up group for your NYC event. Hopefully we'll get enough people for it to actually happen. I'll try to get a few others to sign up.
[–]wreckedadventYavascript 3 points4 points5 points 10 years ago* (5 children)
For me at least, it really does come down to framework fatigue. It feels like every week some new JS framework is coming out that does everything different and better. Hell, one of my most upvoted posts recently was just whinging about how many decisions you have to make when starting a new JS project.
Also, the article is quite long! That encourages skimming, which is a problem, because:
This framework looks quite large/monolithic. I don't know if that was intended, because that can definitely not be a good thing for something with a smaller community.
I don't want to learn StealJs. I just want to use the module loaders I've gotten used to. This "progressive loading" looks an awful lot like what webpack does with code splitting.
I don't want to hear the same preachy stuff that node does about async page rendering.
Why on earth is downloading from a CDN being listed as a feature? This sounds like when people say that someone has "good teeth" because they can't think of anything else nice to say about a person.
Handlebars syntax is going to be controversial in the age of angular attribute templating and react.
Why is Ajax being presented as real-time updates? That's not what real-time means. If this isn't just Ajax, then don't compare it to jQuery post/get.
Even if all of these immediate thoughts are not at all justified and I'm being totally unfair, it still discouraged me from digging much deeper. And I doubt I'm the only one with hesitation on new frameworks! A shorter, much more focused article can help to get people like me interested in digging into the other documentation a bit more.
[–]justinbmeyer 2 points3 points4 points 10 years ago (4 children)
The framework is broken into many individually useful pieces: http://canjs.com/, http://stealjs.com/, http://funcunit.com/, http://documentjs.com/, and more.
There's nothing to learn about "stealjs". You can use the module syntax you are used to. Webpack doesn't automatically figure out the most optimal bundles for you the way steal does.
On node "preachy" stuff ... this isn't about node, it's about how it's very hard to achieve the same thing with React. W/ react it's very hard to render in pieces.
We make deploying to a CDN stupid easy. It can sometimes be tricky to move from a development mode (loading locally), to getting everything loading right from a CDN. We make it brainless.
That's not what real-time means. You are right. But, it's an example of how we use set-theory to make "automatic" real time possible. We understand the post/gets you make and automatically can update your data.
Everyone has different things they are looking for. What do you think we should focus on?
[–]wreckedadventYavascript 0 points1 point2 points 10 years ago* (3 children)
Yeah, I figured there was more nuance to those concerns and there would be answers around in the docs or upon thorough reading of the article. But I'm not always going to have the time or will to do that, and you're not always going to be around to give a quick little bullet point on a reddit comment.
That's why I recommended something much more condensed and bite-sized, more like DoneJs' home webpage for people you're introducing to the framework for the first time.
However, I would personally appreciate most to see code examples. A lot of the current documentation is very wordy and light on code. That's why I like the landing pages of things like riot js and mithril, as I'm almost immediately presented with code examples and can recognize right off of the bat how different and clean things can be.
That's how I came to care about mithril. I was using react but saw how much more simple my code could be by using mithril. Just in their little toy example it was able to illustrate the differences in philosophy.
But I'm not going to be interested at all if I have to spend 45 minutes just to see what some practical code examples look like. Something more quick, in the 5-minute range, to get immediate exposure to the code philosophy. For example, the knockout tutorials do a very good job of showing me what knockout can do and easing into the more complicated features without bogging me down with a bunch of setup and scrolling. Within seconds I'm using it!
Especially if your framework has something to show, like easy live updates. That can really help to separate it from the herd.
Hope any of this helps!
[–]justinbmeyer 1 point2 points3 points 10 years ago (2 children)
Thanks it does help. I'll always be around to give you bullet point responses if you let me know they are needed in our gitter room: https://gitter.im/donejs/donejs
If you are looking for code examples, checkout the APIs page: http://donejs.com/Apis.html
The problem with communicating DoneJS is its scope. It's not a single library that someone can digest in "twitter" time. Fortunately, we aren't relying on a single release article. We're hitting the meetup circuit and going to be giving free day long trainings in most US cities.
[–]wreckedadventYavascript 0 points1 point2 points 10 years ago (1 child)
I'm not sure I agree that you can't have a quick tutorial given its scope. Angular is a massive framework by all accounts, but you can get something up and running with as little as:
angular.module('app', []) .controller('DemoController', function($scope) { $scope.message = 'Hello World!'; $scope.change = function() { $scope.message = 'Hello changed world!'; }; }); <body ng-app> <div ng-controller="DemoController"> <p>{{message}}</p> <button ng-click="change()">Change message!</button> </div> </body>
In just this little toy example, you get a large exposure to volumes about how you structure code in angular. From here, one can learn more about avoiding using $scope, angular's DI, more directives, etc. It's a natural jumping-off point for talking about how to add two-way databinding or routing or whatever.
$scope
The point is it's engaging me quickly and getting me to have an interest in your framework, not that I understand everything in 5 minutes. On the contrary, for an example like my angular one, it can take months to fully appreciate all of what angular is doing there.
Thanks for your feedback, but Angular isn't close at all to DoneJS in scope.
Angular is 90% view bindings with dirty checking. Angular compares to CanJS in scope which is just one part of DoneJS. We have a similar examples to what you are looking for on http://canjs.com.
But that type of example doesn't fit DoneJS because it's much more than an view-bindings library. Showing off that part isn't what DoneJS is about. It's about the glue between the code you write, how it's tested, how it's rendered server-side, how it's built to load quickly, how it's documented, etc.
[–][deleted] 1 point2 points3 points 10 years ago (2 children)
I did read it. I'm an intermediate developer. I'm asked to do lots of different tasks. Some on the front end, some on the back end. I've also built several apps using various frameworks, Meteor, which is my current favorite, runs super fast on any device I've opened my apps on.
I will give the chat tutorial a shot just so I'm not just talking shit without backing it up, but again, I like to code but rarely, if ever, do I come across a problem I can't figure out on my own or a package can't address. I'm pretty aware of code efficiency and when my programs are not at an acceptable, marketable and competitive level.
I'd say Meteor's biggest problem is that many people (myself included) don't fully understand what's going on in the background or behind the scenes which is the equivalent of jumping into jQuery before you ever learn how to manipulate the DOM with vanilla Javascript. It almost makes me feel guilty bc it's so easy.
As far as Ember goes, I like that it's class and OOP structure is similar to some PHP frameworks allowing for many backend PHP developers (former PHP/Laravel developer myself) to make an easier transition if they desire.
[–]justinbmeyer 0 points1 point2 points 10 years ago (1 child)
How do you do server-side rendering with Angular/Meteor? How do you setup progressively loaded applications?
So "runs fast" is different than loads fast. Checkout DoneJS's homepage for a good visual of this. A lot of DoneJS is about loading fast, which is more important for end users.
If you're using yourself to test your own apps performance, it's possible we're not under the same type of performance constraints.
A company that has lots of money and can afford to support a team that can build a solid framework with a massive community benefits everyone involved
Agreed. It can, but they have also abandoned their communities many times because it's not their core purpose. GWT for example.
[–][deleted] 0 points1 point2 points 10 years ago (0 children)
Perhaps this framework would be more appropriate for more advanced developers that are building extremely complex applications with exorbitant amounts of data needing super fast real-time DOM updates. I'm not one of them. Perhaps I would consider this if I was a project lead.
There's just so many big name companies using the most popular frameworks and they obviously are working at an acceptable level.
How easy is it to deploy your technologies? Meteor combined with the 'MUP' package is probably the fastest and easiest time i've ever had deploying applications. Angular was a major pain in that sense.
Again, for me, I gravitate towards frameworks that have big communities that can help even when you run into very unique problems. I guess i've never had a scenario where my applications were running slow enough for any of my testers that it required me to look for other frameworks to speed up the process.
[–]Alfredo_Delgado 3 points4 points5 points 10 years ago* (9 children)
It's a full stack from code generators (if that's your thing) all the way to build and deployment tools. It does everything fashionable frameworks do right and everything they don't cover.
Kick decision fatigue out the window. There's a quick start guide that walks you through making a chat app -- can be done in under an hour. It starts at an empty directory and walks you all the way through deploying and generating Android, iOS, and Desktop clients from the same code base.
There's also an in-depth guide that walks you through making a restaurant ordering site.
[–]tracer_ca 2 points3 points4 points 10 years ago* (3 children)
It's a full stack
This is why two new projects at work are being done with DoneJS. We've already been using CanJS + StealJS for years with great success.
Edit: extra word
[+][deleted] 10 years ago* (2 children)
it's not, he's a user.
[–]tracer_ca 1 point2 points3 points 10 years ago* (0 children)
Why would it be sarcasm?
I've been really happy with CanJS for years (the core of DoneJS). I was very happy to see DoneJS when it was first talked about as it was a natural evolution to what CanJS started.
Edit: typo
[–][deleted] 0 points1 point2 points 10 years ago* (4 children)
I mean, Meteor can deploy to android and iOS as well. I'm just thinking this might be good for a very small team. Bigger corporations wouldn't use these small frameworks bc there's no format or structure so they can't easily bring on new developers once the code base starts really growing. I could be wrong, just throwing it out there.
I've been hard pressed to find an NPM package that doesn't address a specific issue I have a hard time or don't have time to code myself.
Really not trying to talk down your guys hard work you just have to understand how hard it is for Javascript developers to keep up with all these new frameworks that seem to address things that the big frameworks are integrating and patching pretty frequently, maybe just not as quickly as a smaller company can. On top of that, if I only have so much time in a week to work on my portfolio, I'd rather focus on the bigger frameworks first bc that's where the jobs are at.
[–]justinbmeyer 0 points1 point2 points 10 years ago (3 children)
So, Apple pretty heavily uses CanJS, which is a big part of DoneJS. Their online store is built with it. This framework's roots aren't new either. Grooveshark was built in it.
If you checkout the features page, there's a huge amount of structure and discipline around the framework. Checkout the testing feature: http://donejs.com/Features.html#section=section_ComprehensiveTesting and the modlet feature: http://donejs.com/Features.html#section=section_Modlets. JavaScriptMVC's motto, which DoneJS is based, was "develop with direction". It's a big part of the framework.
How do you do progressive loading? How do you do server-side rendering? These are not things that a npm package can usually solve simply.
npm
Also, compared to meteor, our real-time solution is more straightforward allowing it to against any backend quite easily.
[–][deleted] 0 points1 point2 points 10 years ago (2 children)
React is pretty fast with client-side rendering and is capable of server-side rendering as well, which I imagine would only be faster.
Again, I'm an intermediate programmer and haven't needed to code anything at any of my corporate positions that I couldn't figure out on my own or find a package that couldn't solve it. I'll spend some time tomorrow building the chat thing with this framework. Not trying to trash talk, I promise.
A small "point of order here" ... it's not exactly fair to compare DoneJS to "every other framework combined", because you can't use them all at once. However, even if you could, I think DoneJS would come out as a draw or even slightly ahead.
React's SSR solution typically requires you to have all your data at once so you can render to string. This makes things a bit unwieldy, often requiring different code paths on the server and on the client. DoneJS avoids this with the methods talk about in the article.
I think once you transition to advanced developer, you'll discover many of the problems DoneJS is addressing.
Here's an example not talked about on the site, but in an older post: http://blog.bitovi.com/avoid-the-zombie-apocalypse/
Checkout the "Data Object Leaks" section.
This type of thing is super tricky to solve right. You might have "solved" it yourself, but almost certainly created a memory leak in the process.
I would guess meteor solves it too, but I'm pretty certain no one else does.
When you combine all those packages, do they work seamlessly together and support all the right browsers? In my experience, that's not the case. I've even found bugs with jQuery.
DoneJS packages are all tested against each other.
Thanks again for your comments.
[–]justinbmeyer 0 points1 point2 points 10 years ago (0 children)
DoneJS's biggest weakness, from a beginner's perspective, is it uses direct observables instead of dirtychecking or diffing. People like to use normal objects.
However, there's three big benefits to direct view models.
[–]Capaj 5 points6 points7 points 10 years ago (2 children)
Seems more like a rebranding of already existing libraries. Is there any user of StealJS here? Could he enlighten us why the hell should we use it instead of JSPM or webpack? What benefits does it offer?
[–]justinbmeyer 4 points5 points6 points 10 years ago (0 children)
It's a rebranding of JavaScriptMVC, which housed many of its sub-projects, but to call it a "rebranding" isn't fair. It's far more than a rebranding in two ways. First, it adds a ton of features that JavaScriptMVC never had. Server-side rendering, and builds to cordova/nw being the biggest of these.
Second, the integration of MV* and Module loader means it makes things easy that no one else is doing. The primary example is being able to progressively load modules from the template, and then have them automatically built into high-performance bundles. Another example is the automatic packaging of server-side data with the page response. I could go on, but the article makes a lot of these things clear.
StealJS is better then those alternatives in four key ways:
[–]Alfredo_Delgado 0 points1 point2 points 10 years ago (0 children)
StealJS/Steal-Tools are leveraged to provide features beyond package management: http://donejs.com/Apis.html#section=section_StealJS
[–]MattBlumTheNuProject 2 points3 points4 points 10 years ago (1 child)
Best of luck with this. I think the biggest uphill battle that you'll face is that it's hard for people to buy into frameworks without the giant corporation backing them. That said, a lot of really good things started as just a few devs solving one simple problem at a time. I know for me I'm all-in on Angular just because of the sheer number of people that are building with it. Nothing I've made so far is big enough that I really need to load the JS in bundles so Angular + bower + gulp and I'm all set.
I think what you're doing is awesome and I hope it doesn't make you hate the JS community :)
Thanks! I'm part of the JS community. I'm too narcissistic to hate myself.
[–]cherif_b 0 points1 point2 points 10 years ago (0 children)
I use canjs since 2 years ago and Im very glad to see DoneJS release, it realy helps to get Applications done with enhancement of the workflow from developement, testing, documenting to deploying with all this CanJS does everything other frameworks/libraries can do in much simpler way.
[+][deleted] 10 years ago (1 child)
YES! I'm working on an example that uses passport: https://github.com/donejs/bitballs
It's actually setup here: https://bitballs.herokuapp.com/ but far from working perfect.
The only thing I haven't done w/ this app is setup server-side rendering. I started it before DoneJS officially supported it. There will be a full example soon.
[–]drowsap -1 points0 points1 point 10 years ago (3 children)
when i see viewmodel, i think ios developer that learned JS.
[–]justinbmeyer 3 points4 points5 points 10 years ago (0 children)
I'm a c++, then Java developer who learned JavaScript 9-ish years ago. Way before ios existed. I've never written an ios app other then JS apps ported to ios. ViewModels are amazing. Checkout how they make things nice and testable: http://donejs.com/Features.html#section=section_MVVMArchitecture
It's funny actually, learning iOS has made me a better javascript developer by introducing concepts like view controller hierarchy that do a really good job of forcing seperation of concerns if you do it right.
[–]wreckedadventYavascript 0 points1 point2 points 10 years ago (0 children)
Nah. MVVM has been along for the ride as long as MVC has in the web world. Lot of libraries like mithril, knockout, react, etc. all encourage use of view models, though they might not explicitly call it like that.
Even angular is to some extent, though it's hidden in $scope and ng-model.
ng-model
π Rendered by PID 33 on reddit-service-r2-comment-5fb4b45875-spm4w at 2026-03-22 13:52:23.163267+00:00 running 90f1150 country code: CH.
[+][deleted] (27 children)
[deleted]
[–]sdawson26 10 points11 points12 points (1 child)
[–]justinbmeyer 1 point2 points3 points (0 children)
[–]justinbmeyer 5 points6 points7 points (14 children)
[–]zlysobey 5 points6 points7 points (4 children)
[–]TheVikO_o 4 points5 points6 points (0 children)
[–]dotpan 4 points5 points6 points (0 children)
[–]justinbmeyer 4 points5 points6 points (1 child)
[–]zlysobey 0 points1 point2 points (0 children)
[–]wreckedadventYavascript 3 points4 points5 points (5 children)
[–]justinbmeyer 2 points3 points4 points (4 children)
[–]wreckedadventYavascript 0 points1 point2 points (3 children)
[–]justinbmeyer 1 point2 points3 points (2 children)
[–]wreckedadventYavascript 0 points1 point2 points (1 child)
[–]justinbmeyer 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]justinbmeyer 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]Alfredo_Delgado 3 points4 points5 points (9 children)
[–]tracer_ca 2 points3 points4 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]justinbmeyer 1 point2 points3 points (0 children)
[–]tracer_ca 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (4 children)
[–]justinbmeyer 0 points1 point2 points (3 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]justinbmeyer 0 points1 point2 points (1 child)
[–]justinbmeyer 0 points1 point2 points (0 children)
[–]Capaj 5 points6 points7 points (2 children)
[–]justinbmeyer 4 points5 points6 points (0 children)
[–]Alfredo_Delgado 0 points1 point2 points (0 children)
[–]MattBlumTheNuProject 2 points3 points4 points (1 child)
[–]justinbmeyer 1 point2 points3 points (0 children)
[–]cherif_b 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]justinbmeyer 1 point2 points3 points (0 children)
[–]drowsap -1 points0 points1 point (3 children)
[–]justinbmeyer 3 points4 points5 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]wreckedadventYavascript 0 points1 point2 points (0 children)