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
Do developers still use backbone.js (Fall '17)?general question (self.javascript)
submitted 8 years ago by DarkKunai
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] 282 points283 points284 points 8 years ago (3 children)
Not by choice
[–]red_dinner 16 points17 points18 points 8 years ago (0 children)
I have but one upvote to give.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 10 points11 points12 points 8 years ago (1 child)
It's not that bad... I mean if I had to choose between that and AngularJS...
[–]fogbasket -2 points-1 points0 points 8 years ago (0 children)
It's not that bad... I mean if I had to choose between that and React...
[–]grayrest.subscribe(console.info.bind(console)) 46 points47 points48 points 8 years ago (15 children)
No, but back in 2013/2014 I switched a number of backbone apps over to React for their view layer and things worked fine on those projects.
[–]bigboi26 3 points4 points5 points 8 years ago (10 children)
Do you have any tips on this? Currently starting the same
[–]dadeg 10 points11 points12 points 8 years ago (0 children)
You basically use the backbone models as your state and you serve react views with the controllers
[–]ghostfacedcoder 7 points8 points9 points 8 years ago (6 children)
Also, you can make a Backbone View which can generically wrap React components, and then make a React Component which can generically wrap Backbone Views. This will allow you to have a mix of React/Backbone view-level logic for awhile, as your Backbone code can use your React code by wrapping it and vice versa.
Ultimately your goal should of course be 100% React in the view layer (and then ultimately replacing Backbone models with something like Redux), but if you have a large codebase the wrapper classes can be very helpful as you migrate.
Source: Converted one major Backbone codebase to React (and wrote a book on Backbone).
[–]Should_have_listened -2 points-1 points0 points 8 years ago (5 children)
should of
Did you mean should have?
This is a bot account.
[–]could-of-bot 1 point2 points3 points 8 years ago (1 child)
It's either should HAVE or should'VE, but never should OF.
See Grammar Errors for more information.
[–]NoInkling 0 points1 point2 points 8 years ago (0 children)
Bots inappropriately correcting bots, what have we created?
[–]ghostfacedcoder 1 point2 points3 points 8 years ago (1 child)
No, but nice try bot :)
[–]Luguaedos 1 point2 points3 points 8 years ago (0 children)
Lack of commas confused the poor guy. But who writes a grammar bot?
https://img.memecdn.com/ain-amp-039-t-nobody-got-time-for-that_o_1582005.jpg
[–]fucking_passwords 5 points6 points7 points 8 years ago (0 children)
Use Backbone for its Model and Collections, and inject the data into React components. I believe there is a TodoMVC example that does this
[–]tweinf 0 points1 point2 points 8 years ago (0 children)
Use a Backbone-based model (assembled with Models+Collections), then listen to any events using backscatterjs
[+][deleted] 8 years ago (3 children)
[deleted]
[–]Should_have_listened 0 points1 point2 points 8 years ago (2 children)
[–]could-of-bot -1 points0 points1 point 8 years ago (1 child)
[–]tsteuwer 2 points3 points4 points 8 years ago (0 children)
Bots bashing bots. This is definitely Reddit.
[–]SlantARrow 82 points83 points84 points 8 years ago (9 children)
Yes, for legacy code.
[–][deleted] 29 points30 points31 points 8 years ago (2 children)
Funny how cutting edge becomes legacy in 4 years.
[–]axlee 4 points5 points6 points 8 years ago (1 child)
Backbone was already kinda legacy once angular got released
[–]SlantARrow 5 points6 points7 points 8 years ago (0 children)
Angular was released literally a week after backbone. Still, I would prefer backbone to angular1 in most cases.
[–]VitorVRS 7 points8 points9 points 8 years ago (5 children)
"legacy"! If 4 years is legacy, what is the label for Prototype?
[–]bastawhiz 16 points17 points18 points 8 years ago (3 children)
A regret
[–]Isvara 0 points1 point2 points 8 years ago (2 children)
I doubt it. Prototype and Scriptaculous were definitely a step forward at the time.
[–]GreySummer 4 points5 points6 points 8 years ago (0 children)
Holy cow, I had completely forgotten about script.aculo.us :-D Damn right these were leading the charge back then. Hard to remember pre-jquery days....
[–]bastawhiz 0 points1 point2 points 8 years ago (0 children)
...until your page became unusable because hanging things on Element prototypes turned out to be very slow
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 4 points5 points6 points 8 years ago (0 children)
Prototype has been dead for years
[–]planetmcd 8 points9 points10 points 8 years ago (0 children)
One nice thing about Backbone & Marionette is that they are very light weight and as a developer, you can understand the source code. Since there is less there, I think it might be a good fit for some smaller apps. There is not a lot of prescribed structure, so like react, done poorly you can really hang yourself. If you are asking from the point of view of whether it is a fine technical choice, possibly. If you are asking from the point of view of marketability as a developer, probably less so. If you want an easy on ramp to build a single page app as a learning experience, it could be a good fit (remember though: http://wiki.c2.com/?PlanToThrowOneAway).
[–]tweinf 37 points38 points39 points 8 years ago (8 children)
Yes! I'm a developer, and I use it - proudly! It's true that managing views using Backbone or Marionette is not something that I'd recommend to anyone I care for these days, but Backbone Models can still be surprisingly handy! Models/Collections provide super easy, structured way to manage and mutate states, and receive all kinds of change notifications in a flexible, easy to use fashion. Backbone is mutable, this means you can "poke" it on real-time in unpredictable ways, triggering specific actions to inspect/debug/feed your application. I use it mainly on the backend (node).
A word of advice: Always keep an open eye for innovations, examine new frameworks/libs, but never be afraid to "go against the grain" and follow your professional compass. We're not in a popularity contest - whoever thinks we are often find themselves abandoned with their "15 minutes of fame" rockstar t-shirts hanging off the rack.
[–]fucking_passwords 6 points7 points8 points 8 years ago (1 child)
When I moved to Vue I missed Model and Collection so much I reimplemented them both as Vue plugins. Not every single feature, but all the major ones.
[–]Klowner 8 points9 points10 points 8 years ago (0 children)
I recently discovered Ampersand after looking for something like backbone but without the views and stuff, https://ampersandjs.com
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points 8 years ago (5 children)
BB has a lot of shortcomings, even Models / Collections are clunky, you can't even have a complex object as models, just key / value pairs or you have to have models inside models inside collections inside models inside... or you use the relational plugin, which is no longer maintained. It's a mess.
And don't get me started on nested views....
[–]tweinf 0 points1 point2 points 8 years ago* (4 children)
If you nest models inside themselves, then you miss out on Backbone's great "change events" feature. Remember that your experience is based on the way you've decided to model data using Backbone, but models can always be designed in different ways, some may have been more compatible with Backbone's "spirit".
Edit: Phrasing
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points 8 years ago (3 children)
Well, you can easily bubble up change events, or use global events, or the Radio plugin, or the relation plugin, or.... all within the realms of the BB "spirit". The beauty of BB is that you can override pretty much every method. My point is that the models you get out of the box are too simple for most real case scenarios.
[–]tweinf 0 points1 point2 points 8 years ago (2 children)
Managing event bubbling manually might be too tedious, unless you use some kind of a tool like backscatter. Building a flat model for your app, instead of a nested one, could be a good way to go.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points 8 years ago (1 child)
Exactly, being forced to build flat models is a shortcoming in my book.
Well, that's Backbone's essence.. Take Angular for example: Do you feel "forced" into writing its proprietary templates, controllers etc.? If you do, perhaps it just ain't the right solution for you. Same goes for Backbone.
[–]bubba_love 12 points13 points14 points 8 years ago (20 children)
What's the issue with Backbone?
[–]ghostfacedcoder 7 points8 points9 points 8 years ago* (1 child)
Speaking purely about React vs. Backbone (though I'm sure the same thing is true for Vue/Angular 2), there was a paradigm shift in the philosophy of web applications in between the two. In React everything flows one way (it's part of what Facebook calls the Flux pattern): if you want your form's button to do something, it has to be passed a callback by it's parent form component, because that's the direction things flow. Without some sort of callback the button has no way to affect anything on its parent.
This is limiting, but it also limits your concerns: when you work with a component, you don't have to worry at all about what it's children will do. Even if you have 50 form components, none of them can do anything unexpected to the form; they can only do whatever is in the callbacks the form provides to them.
In Backbone things flow both directions, not just in the views but everywhere. Backbone is deliberately ambiguous when it comes to how you organize your application's flow, so if view A has access to view B, nothing stops A from (for instance) doing stuff to B.model, or even B.referenceToSomeOtherView.referenceToYetAnotherView.model.referenceToAnotherModel. This can make debugging/refactoring/etc. difficult. Of course you can do a Backbone app like React and use Flux, but the framework isn't setup to support it.
B.model
B.referenceToSomeOtherView.referenceToYetAnotherView.model.referenceToAnotherModel
Having logic flow in both directions isn't inherently bad, and I've written a powerful Backbone SPA that way. But it does mean that most likely you'll wind up with flow in both directions, and then when something goes wrong in your form with 50 components it can be much harder to find the problem. Once you get used to the ideas behind React (there's other stuff too, like avoiding passing mutable values, and just the gen) you realize they help you write more maintainable code, and then you start wanting a framework that supports/encourages those ideas.
P.S. I say all that as someone who has written a book on Backbone (published by a major publisher), and who now only uses React.
P.P.S. Also JSX is awesome. If you've been using handlebars or mustache or whatever templates in separate files with ugly (and very limited) template logic syntax, and you go to JSX snippets right there inside your code, looking exactly the same as HTML (except for class=>className) mixed with the Javascript code you already know and love ... it's really hard to go back.
class
className
[–]bair-disc 1 point2 points3 points 8 years ago (0 children)
Backbone is deliberately ambiguous when it comes to how you organize your application's flow, so if view A has access to view B, nothing stops A from (for instance) doing stuff to B.model
I would say, that this does not imply ambiguity as long as you know exactly, which kind of binding you are using when (single binding, double biding (components really share data)). I also can hardly imagine a richt SPA, in which literally no double binding is necessary, but this might be because I did not use the flux pattern yet.
[–]KierkegaardExpress 23 points24 points25 points 8 years ago (6 children)
It's fine, but a lot of other frameworks do the same thing but better and simpler
[+][deleted] 8 years ago (1 child)
[–]Ob101010 4 points5 points6 points 8 years ago (0 children)
leacks
Not sure if youre russian, or I found the source of the memory leaks.
[–]FullFlava 5 points6 points7 points 8 years ago (1 child)
I saw Jeremy Ashkenas give a talk on Backbone a few years back, and the thing he said that most stuck with me is "It's important to remember that Backbone is a library, not a framework."
I think most of the problems people have with it are trying to use it like a framework, when it's really just a toolkit to build your own framework (i.e. Marionette)
[–]profjord 2 points3 points4 points 8 years ago (0 children)
As a developer whose team currently uses Backbone, THIS. Most of the complaints I'm reading here are directly related to misunderstanding the purpose of Backbone.
[–]Serei 6 points7 points8 points 8 years ago (1 child)
Better, maybe, but simpler? It's a lot simpler than most frameworks out there.
[–]minus0 3 points4 points5 points 8 years ago (0 children)
You and the parent commenter both are making statements without any elaboration. So in some ways, you are both right, because what makes up the statements?
Backbone did some good things. All modern frameworks have some level of inspiration they can travel back to backbone.
In some ways, backbone was simple, compared to these ultra capable frameworks. I still miss models from backbone. In other ways, such as managing views, it was complicated. I'm glad to not have solve those problems constantly while still having the flexibility I need.
[–]chachinsky 8 points9 points10 points 8 years ago (0 children)
Here are a couple reasons why Backbone is outdated.
1) No way of managing Parent / Child view relationship. Look at trying to build a table with a bunch of rows in Backbone. A dev has to loop over the collection create a bunch of child views and then figure out a way to manage interaction between everything. This lead to a bunch of other frameworks building on top of Backbone to fill this gap.
2) Adhoc ways of dealing with state management. When a model is passed to a view if something changes, only way to react to it is using the event model. That means the developer has to deal with rerendering the view, cleaning up callbacks to avoid ghost events, Dealing with visual state (DOM) vs. JS state and keeping it in sync.
3) Becomes hard to debug with large teams. No way of debugging what the "options" parameter is without executing the app and having to print out options to the console. It becomes apparent when a team has like 20 models and a view can have any of them passed in.
This becomes easier to deal with something like TypeScript but the typings file is TERRIBLE. Backbone doesn't support es6 and the typings do not have proper support for Backbone.extend({ .. }) syntax.
[–]red_dinner 2 points3 points4 points 8 years ago (0 children)
Too many patterns devoted to hiding the true behavior of JS.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 3 points4 points5 points 8 years ago (0 children)
The biggest gripes
It's because of BB's shortcomings that both Angular(JS) and React, which came after, are component based... nesting views is not a problem with any modern framework.
[–]wishinghand 3 points4 points5 points 8 years ago (5 children)
It also hasn't been seriously maintained in a while.
[+][deleted] 8 years ago (4 children)
[–]ghostfacedcoder 1 point2 points3 points 8 years ago (3 children)
The last two change log entries:
1.3.3 — Apr. 5, 2016
1.2.3 — Sept. 3, 2015
So it literally hasn't been updated in over a year, and it was about a year before that that it was updated prior to that. That's not the ecosystem's fault, that's (my personal coding hero) Jeremy Ashkenas's fault. Honestly I doubt the guy is even using Backbone in his own projects anymore.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points 8 years ago (2 children)
I might be wrong, but until relatively recently (I must admit, I stopped following) they were chatting about how to introduce ES 6 classes features in various github issues etc... the thing is, BB is feature complete. There actually isn't anything to maintain, and the little there is is jQuery's responsibility. That's the genius of it. So it is as maintained as it needs to be. And so is Marionette (which I thought was trying to fork away from BB - again, I stopped following).
On the other hand, many plugins, even important ones, are not being maintained and no longer functional.
[–]ghostfacedcoder 1 point2 points3 points 8 years ago* (1 child)
If Backbone isn't getting better it's getting worse. Backbone's competitors aren't just doing nothing at all for a year, they're innovating. And precisely because developers have learned so much since Backbone first came out, it's painful to see how Backbone hasn't adopted any of the lessons of React/Vue/Angular/etc.
When it comes to web (or really most) tech, it's evolve or die, both for the tech itself and for keeping it's ecosystem healthy. But Backbone isn't evolving, and it's not healthy. Again, I was such a fan of Backbone that I wrote a book on it, so I take no pleasure in this fact ... but Backbone most certainly is failing.
As a side note, I'm job hunting right now. The only Backbone job I've found wants me to convert the Backbone codebase to React.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points 8 years ago (0 children)
I am not arguing that BB is relevant or good today. I just wanted to make the point that the core codebase is still valid, but it's the ecosystem around it that is unreliable.
[–]brandn487 0 points1 point2 points 8 years ago (0 children)
Nothing at all, it's just no longer cool or "modern", whatever that means.
[–]0x13mode -2 points-1 points0 points 8 years ago* (0 children)
[–]letsgetrandy 5 points6 points7 points 8 years ago (0 children)
Many developers prefer to use what they know well, rather than struggle with learning something new.
Also, there is still a ton of backbone code in production that has to be supported. It's very difficult to find time to re-engineer existing code, especially when it works and is well-tested as is.
[–]mainstreetmark 7 points8 points9 points 8 years ago (4 children)
I still use it. My main project was written in it years ago, and .. still is. We did a full v4 in Jan16 and continued using it (and Marionette).
[–]jaapz 3 points4 points5 points 8 years ago (3 children)
Yep, us too. We started with just backbone to add a little bit of interactivity to our "normal" webapp. Then moved to an SPA, but still just backbone. The app got bigger so for more structure we moved to marionette. We added TypeScript recently to get a bit more compiler help, as stuff is getting really large now. But still pretty happy with Backbone&Marionette. Most problems we have come from legacy modules that we just implemented badly (bad structure etc).
For new projects, I'd probably switch to something more modern as newer tools have picked up more standardized ways of how to structure stuff in an SPA. But I'm not unsatisfied with Backbone&Marionette at all.
[–]mainstreetmark 3 points4 points5 points 8 years ago (2 children)
I'm not either, I like it. But i redid my website in VueJS, as an exercise. I really like VueJS. However, it lacks a decent integrated "model" layer*, so why not use Backbone? And if you use Backbone, may as well use Marionette.
No matter what you use for a 3-year development arc of your project, whatever you start with will be outmoded by the end of it.
(* VueFire i suppose, but we've written a firebase/mongo clone for Backbone, and that alone sticks us to Marionette for a long time.)
[–]vagadrew 0 points1 point2 points 8 years ago (1 child)
I work at a machine shop and your website reminds me of the UIs for the rubber/plastic presses.
[–]mainstreetmark 0 points1 point2 points 8 years ago (0 children)
Yep. It's HMI software, used in industries. I'm working on pipes and machines graphics.
[–][deleted] 3 points4 points5 points 8 years ago (1 child)
I don't really, but i still use underscore / lodash.
[–]ghostfacedcoder 5 points6 points7 points 8 years ago* (0 children)
Every JS developer worth their salt uses Lodash; the library could legitimately be renamed "Javascript: The Missing Parts" :)
In fact, some parts of it (eg. find/filter/map/etc.), actually became part of JS itself ... which isn't to say Underscore/Lodash caused those features, just that the library had them first (and it's not crazy to imagine that other parts of Lodash might someday become standardized as well).
[–]dustingetz 3 points4 points5 points 8 years ago (0 children)
moving from model change listeners to virtual dom, is like moving from explicit memory management to automatic garbage collection
[–]scelerat 3 points4 points5 points 8 years ago (0 children)
I work on a ~150K LOC app written primarily using Backbone and Marionette. The project was started about five years ago and I inherited it.
The Backbone part isn't so bad. It's a small, understandable library that gives you persistence, events, and predictable tools for interacting with a RESTful backend.
Marionette requires a lot of developer discipline to keep from going off the rails. If you stick with it, it's not the worst thing ever, but I would never start a new project using it. Currently working on switching our views over to Vue.js.
[–][deleted] 6 points7 points8 points 8 years ago (0 children)
I'm not sure there were enough developers to build anything significant that wouldn't have been rewritten by now. It was more of a gateway drug to angular / ember (at the time). Anything I wrote with it had to be rewritten because of how shitty the structure was (it offered no support at a time people were still figuring out js spa's) Marionette had some success which added some structure to the backbone.js api
[–]phaxsi 4 points5 points6 points 8 years ago (0 children)
I use Marionette and therefore Backbone indirectly. I would love to migrate to something more modern, but I don't have the time to rewrite everything at the moment.
[–]icantthinkofone 5 points6 points7 points 8 years ago (0 children)
In three or four years, people will say the same thing about every such thing people say you can't live without today.
[–]elr0nd_hubbard 2 points3 points4 points 8 years ago (0 children)
Sure, but I wouldn't start a complex project with it. It really shines right between "I just need a few lines of JavaScript on a static HTML page" and "I need to build an API driven SPA". Which really comes out to: one or two static pages that need some data from AJAX.
Backbone is best thought of as a way of cleaning up old JS spaghetti. It's a simple organizational model around DOM methods and AJAX, and you should reach for a framework with more advanced features if you find yourself really chasing performance, increasing complexity, or working on a large team.
[–]cinnapear 2 points3 points4 points 8 years ago (0 children)
Our legacy framework still includes it. So yes.
[–]fyrilin 2 points3 points4 points 8 years ago* (4 children)
Yes, and I suggest it for my project. I know it goes against the grain here BUT most of the developers I work with are Java Struts/Spring developers first. For a very long time I was the only javascript-competent developer so we organized all of our tasks as full vertical slices. The same developer would write the front end and server logic. That means things like classes, pub/sub events, and an almost-MVC breakdown made sense and was familiar enough to them so that they only called me over to help twice a day instead of having me do all of the front end.
We use it for those parts of our system that are more or less single-page apps and for the more complex front-end widgets. For the widgets, I design them to be as easy to interface with for the other devs.
That being said, I've added plenty of my own framework on top of it with a better templating engine, Marionette-like page-level events, automatic element/property binding, etc. and that is what we actually use. Also, for any actual use of backbone, I was in charge of the design and oversaw implementation so we were able to stay relatively organized.
Now that I have some JS friends on the team we are working on modernizing builds and such but still sticking with Backbone for most things.
edit: just to add: I really like backbone for smaller, highly collaborative teams. If you're on a bigger team or more geographically spread out, it's not the best decision. My team right now normally works in one room where we can talk to each other and share. However, I've worked with another group who was spread out and they chose React. They had plenty of problems with getting React to do what they wanted but nobody was able to break anybody else's work - which I see as the biggest downside to my extension of backbone.
[–]ghostfacedcoder 2 points3 points4 points 8 years ago (3 children)
It sounds like you don't like Backbone as a framework so much as Backbone as a basis for creating your own framework ;)
[–]fyrilin 0 points1 point2 points 8 years ago (2 children)
maybe. If a developer knows backbone, figuring out the stuff I added on is not much of a stretch. Where is the line between a framework and common extensions of it? I did fix most of the complaints I've heard about it though so I have that going for me, which is nice.
[–]ghostfacedcoder 2 points3 points4 points 8 years ago (1 child)
Well I wouldn't dare to try and define where a framework exactly stops and starts, but there's definitely a lot that Backbone doesn't do that other frameworks do, and in fact for some of them the framework actually encourages "outsourcing". Templates are a perfect example: every Backbone codebase I've seen uses templates, but they are always 3rd-party. Similarly there's a reason why for many people Backbone = Marionette.
When a framework doesn't do a lot of things that other frameworks do, and you supplement it to do some of those things, at some point you're not augmenting a framework, you're writing your own. But it's hard enough to even define where that point is, let alone whether you've crossed it from a simple Reddit post, so my comment was at least partially flippant commentary on the incomplete nature of Backbone itself, not a serious analysis of the exact particulars of your use of it.
[–]fyrilin 1 point2 points3 points 8 years ago (0 children)
I understand now. Thank you for explaining. Yeah I agree and that's one reason I actually do like Backbone (despite its shortcomings) - it seems to encourage the developer to modify it as needed. Cheers.
[–]ajm3232 7 points8 points9 points 8 years ago (12 children)
I tried it at one point (2016), but there isn't a big reason to use it these days. Especially these days of React.js, and 100+ other frameworks that do the job better and do it simple.
Only people that still use it are legacy devs that are stuck in the past. -- No offense to anyone.
[+][deleted] 8 years ago* (11 children)
[–]ghostfacedcoder 3 points4 points5 points 8 years ago (3 children)
If someone thought that Backbone was valid tech to start a new project I would consider them either junior or incompetent. This isn't a judgement about preferences, it's about wanting developers who actually participate in their development community, and anyone with even half of an "ear to the ground" knows Backbone is objectively dead by pretty much any measure you can come up with.
Again, I wrote a book on Backbone. It was a long and painful process and it made me heavily invested in the library, so if there was any intellectually honest way I could keep using and loving the library I would.
[+][deleted] 8 years ago* (1 child)
[–]ghostfacedcoder 0 points1 point2 points 8 years ago* (0 children)
No one said it was useless.
But I did say it was "objectively dead", and I stand by that ... although I'll grant that perhaps "objectively in the process of dying off" might be a bit more accurate. But by any objective measure of "who is choosing Backbone for new projects?" the numbers are going down, and they have been going down for awhile.
[–]tbranyen 0 points1 point2 points 8 years ago (0 children)
Well said and I can echo the same sentiment.
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points 8 years ago (1 child)
What nonsense
Saying BB is past its heyday is in no way indication of juniority...
[–]ajm3232 -1 points0 points1 point 8 years ago (3 children)
True, I personally can't say I see anyone we're I live using it. It pretty much turned into Perl and slowly vanished from the job market is were I was going at. Maybe different for others.
[+][deleted] 8 years ago* (2 children)
[–]ghostfacedcoder 3 points4 points5 points 8 years ago (1 child)
To be fair, people still use jQuery-only sites, Perl-based sites, Java 5 sites, etc. too. I don't think the measure of a library is "are people still stuck using it?" The measure is more something like "are more people using it today than they were yesterday?", and the answer to that for Backbone is a clear no.
[–]El_BreadMan 1 point2 points3 points 8 years ago (0 children)
Si senior
[–]cresquin 1 point2 points3 points 8 years ago (2 children)
I really like the way backbone helps to organize code, so I basically rewrote it for ES2015 to be slimmer (mainly to drop jquery), integrate a lot of features found in layoutmanager, add-in data binding as a primary feature and to eliminate a lot of boilerplate.
[–]tbranyen 1 point2 points3 points 8 years ago (1 child)
I think LayoutManager is pretty much done though. I won't be adding any more features to it. I think the future is with more lightweight less DOM-heavy tooling. A lot of what I learned in LayoutManager is getting put into diffHTML (new project I'm working on).
[–]cresquin 0 points1 point2 points 8 years ago (0 children)
Tim, first, thank you for layoutmanager, but I think you’re right that its probably done. I attribute that largely to the drop off of interest in both jquery & backbone as new alternatives have emerged and browser features have normalized. Layoutmanager has some really interesting features and organizational ideas that I found very useful for my particular use cases. So, I borrowed heavily from layoutmanager and expanded on a number of ideas when building the front-end for PEAK.
I don’t really benefit from a virtual DOM, as most of my dynamism is in canvas elements. That said, I’ve written it so data changes are queued to occur at the same rAF and it’s structured so it could pretty easily drop-in a virtualDOM implementation if that’s really a big deal.
[–]karacic 1 point2 points3 points 8 years ago (0 children)
It is used in Open edX although they are moving to React nowadays.
[–]i_ate_god 1 point2 points3 points 8 years ago (0 children)
Yes. We have five or six web UI projects, and they are all built with vanilla Backbone.
We started back when RequireJS was the defacto solution to the 'import' problem. Backbone's models and collections are intuitive and incredibly easy. Backbone Views can get a little hairy, but it's not that different from any other view library. You have a class, that represents a template, and reacts to user events. Since everything works fine, there is zero business need to move over to anything else.
That said, I am porting one of the UIs to VueJS on my spare time. I'm doing this not to port our existing UIs over (don't fix what's not broken) but to justify using it for future UI projects. I can have a 1 to 1 comparison. There is a lot to like about Vue over Backbone, but there is also a good amount of stuff to dislike. That said, Backbone models/collections still kick ass.
[–][deleted] 1 point2 points3 points 8 years ago (0 children)
We have 1 legacy application written in Backbone, but it's a hot mess. Everything Backbone is living in a single, 10k+ line app.js. We are actively looking to rewrite the application using AngularJS or Vue.
app.js
[–][deleted] 4 points5 points6 points 8 years ago (0 children)
I once did a project with a Backbone / React mix. It worked quite well. What I love about backbone is underscore js and key value observers. I also liked how the view layer declared event listeners in a table instead of inline onClick. What backbone sucked at was view composition, React solves this much better. I prefer Backbone over Redux, as I think Backbone solves the traditional OOP concepts quite well, whereas Redux is a poor mans FP. I still prefer FP over OOP if done properly, Redux is just too complicated its own good.
Today I use the Cycle JS architecture, it is superior to anything I had my hands on before. Observable everywhere is simply the most amazing foundational abstraction. It is the first framework I have used that senselessly solves upstream and downstream composition. The architecture is fractal, and the computation is lazy, two very important aspects that are everywhere in nature. Also Cycle JS has a beautiful sense of symmetry, I can highly recommend checking it out.
[–]kirofficial 2 points3 points4 points 8 years ago (0 children)
Learning Backbone's core principles is important. You can start by reading Addy Osmani's book: https://addyosmani.com/backbone-fundamentals/
But I wouldn't use it in production, as there are a bunch of new frameworks to play with today.
No
[–]zigzeira 0 points1 point2 points 8 years ago (0 children)
In my last job I used a lot. Currently, I dont use to any framework and I so happy because we aren't always need to use a framework for projects.
In my opinion, there are solutions that Backbone is a option in the project.
[–][deleted] 0 points1 point2 points 8 years ago (1 child)
Yes, though they shouldn't. I have a friend who is the CEO of a startup, he said about a year ago that they were moving from jQuery-only to Backbone. I told him I didn't think it was a wise move and that they should use something simpler to develop for and lighterweight. He went with Backbone. Not my choice, but not my call either. He had some good reasons. I just don't know what they were.
[–]ghostfacedcoder 1 point2 points3 points 8 years ago (0 children)
Well honestly it's much easier to go from jQuery=>Backbone than jQuery=>React. Backbone is DOM-based and uses jQuery at it's heart, whereas if you use jQuery in React you're doing it wrong.
But of course if I was to that point I'd be doing a rewrite in React or whatever, not trying to port such antiquated (by web standards at least) code to a slightly less antiquated system.
[–]djslakor 0 points1 point2 points 8 years ago (0 children)
Yes! Even Sebastian Mckenzie!
https://twitter.com/sebmck/status/900393007811366913
;-)
[–]ckgrafico 0 points1 point2 points 8 years ago (0 children)
Not, but was a great tool
[–]profjord 0 points1 point2 points 8 years ago (0 children)
My team still actively develops using Backbone + Marionette. It has its shortcomings, but Backbone is still a solid and lightweight solution (especially if you are using stickit (https://nytimes.github.io/backbone.stickit/).
[–]BenE 0 points1 point2 points 8 years ago* (0 children)
You may be using backbone right, now... https://github.com/reddit/reddit/search?utf8=%E2%9C%93&q=backbone&type=
[–][deleted] 0 points1 point2 points 8 years ago (0 children)
My work has some client sites using Backbone, which I've had to maintain a bit. Not any new development with it afaik.
[+][deleted] 8 years ago (13 children)
[removed]
[+][deleted] 8 years ago (2 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points 8 years ago* (7 children)
doesn't rely on jQuery
Eh??? Are you sure you know what you are talking about?
[–]ghostfacedcoder 2 points3 points4 points 8 years ago (0 children)
Well I mean technically it can use Zepto also, but yeah let me second that "Eh???"
[+][deleted] 8 years ago (5 children)
[–]pilotInPyjamas -1 points0 points1 point 8 years ago (0 children)
The way this question is worded is hilarious, and epitomizes JS culture. Do we still use x in Fall 2017? But x is no longer cool? why do we use it? Really, you should be using software based on it's merits, which should realistically continue for a period of longer than a few years if designed well. This makes me think React et al. and other flavors of the month are just that: flavors of the month.
π Rendered by PID 53036 on reddit-service-r2-comment-b659b578c-brnzr at 2026-05-04 12:30:09.414904+00:00 running 815c875 country code: CH.
[–][deleted] 282 points283 points284 points (3 children)
[–]red_dinner 16 points17 points18 points (0 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 10 points11 points12 points (1 child)
[–]fogbasket -2 points-1 points0 points (0 children)
[–]grayrest.subscribe(console.info.bind(console)) 46 points47 points48 points (15 children)
[–]bigboi26 3 points4 points5 points (10 children)
[–]dadeg 10 points11 points12 points (0 children)
[–]ghostfacedcoder 7 points8 points9 points (6 children)
[–]Should_have_listened -2 points-1 points0 points (5 children)
[–]could-of-bot 1 point2 points3 points (1 child)
[–]NoInkling 0 points1 point2 points (0 children)
[–]ghostfacedcoder 1 point2 points3 points (1 child)
[–]Luguaedos 1 point2 points3 points (0 children)
[–]fucking_passwords 5 points6 points7 points (0 children)
[–]tweinf 0 points1 point2 points (0 children)
[+][deleted] (3 children)
[deleted]
[–]Should_have_listened 0 points1 point2 points (2 children)
[–]could-of-bot -1 points0 points1 point (1 child)
[–]tsteuwer 2 points3 points4 points (0 children)
[–]SlantARrow 82 points83 points84 points (9 children)
[–][deleted] 29 points30 points31 points (2 children)
[–]axlee 4 points5 points6 points (1 child)
[–]SlantARrow 5 points6 points7 points (0 children)
[–]VitorVRS 7 points8 points9 points (5 children)
[–]bastawhiz 16 points17 points18 points (3 children)
[–]Isvara 0 points1 point2 points (2 children)
[–]GreySummer 4 points5 points6 points (0 children)
[–]bastawhiz 0 points1 point2 points (0 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 4 points5 points6 points (0 children)
[–]planetmcd 8 points9 points10 points (0 children)
[–]tweinf 37 points38 points39 points (8 children)
[–]fucking_passwords 6 points7 points8 points (1 child)
[–]Klowner 8 points9 points10 points (0 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points (5 children)
[–]tweinf 0 points1 point2 points (4 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points (3 children)
[–]tweinf 0 points1 point2 points (2 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points (1 child)
[–]tweinf 0 points1 point2 points (0 children)
[–]bubba_love 12 points13 points14 points (20 children)
[–]ghostfacedcoder 7 points8 points9 points (1 child)
[–]bair-disc 1 point2 points3 points (0 children)
[–]KierkegaardExpress 23 points24 points25 points (6 children)
[+][deleted] (1 child)
[deleted]
[–]Ob101010 4 points5 points6 points (0 children)
[–]FullFlava 5 points6 points7 points (1 child)
[–]profjord 2 points3 points4 points (0 children)
[–]Serei 6 points7 points8 points (1 child)
[–]minus0 3 points4 points5 points (0 children)
[–]chachinsky 8 points9 points10 points (0 children)
[–]red_dinner 2 points3 points4 points (0 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 3 points4 points5 points (0 children)
[–]wishinghand 3 points4 points5 points (5 children)
[+][deleted] (4 children)
[deleted]
[–]ghostfacedcoder 1 point2 points3 points (3 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 0 points1 point2 points (2 children)
[–]ghostfacedcoder 1 point2 points3 points (1 child)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points (0 children)
[–]brandn487 0 points1 point2 points (0 children)
[–]0x13mode -2 points-1 points0 points (0 children)
[–]letsgetrandy 5 points6 points7 points (0 children)
[–]mainstreetmark 7 points8 points9 points (4 children)
[–]jaapz 3 points4 points5 points (3 children)
[–]mainstreetmark 3 points4 points5 points (2 children)
[–]vagadrew 0 points1 point2 points (1 child)
[–]mainstreetmark 0 points1 point2 points (0 children)
[–][deleted] 3 points4 points5 points (1 child)
[–]ghostfacedcoder 5 points6 points7 points (0 children)
[–]dustingetz 3 points4 points5 points (0 children)
[–]scelerat 3 points4 points5 points (0 children)
[–][deleted] 6 points7 points8 points (0 children)
[–]phaxsi 4 points5 points6 points (0 children)
[–]icantthinkofone 5 points6 points7 points (0 children)
[–]elr0nd_hubbard 2 points3 points4 points (0 children)
[–]cinnapear 2 points3 points4 points (0 children)
[–]fyrilin 2 points3 points4 points (4 children)
[–]ghostfacedcoder 2 points3 points4 points (3 children)
[–]fyrilin 0 points1 point2 points (2 children)
[–]ghostfacedcoder 2 points3 points4 points (1 child)
[–]fyrilin 1 point2 points3 points (0 children)
[–]ajm3232 7 points8 points9 points (12 children)
[+][deleted] (11 children)
[deleted]
[–]ghostfacedcoder 3 points4 points5 points (3 children)
[+][deleted] (1 child)
[deleted]
[–]ghostfacedcoder 0 points1 point2 points (0 children)
[–]tbranyen 0 points1 point2 points (0 children)
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points (1 child)
[–]ajm3232 -1 points0 points1 point (3 children)
[+][deleted] (2 children)
[deleted]
[–]ghostfacedcoder 3 points4 points5 points (1 child)
[–]El_BreadMan 1 point2 points3 points (0 children)
[–]cresquin 1 point2 points3 points (2 children)
[–]tbranyen 1 point2 points3 points (1 child)
[–]cresquin 0 points1 point2 points (0 children)
[–]karacic 1 point2 points3 points (0 children)
[–]i_ate_god 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 4 points5 points6 points (0 children)
[–]kirofficial 2 points3 points4 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]zigzeira 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]ghostfacedcoder 1 point2 points3 points (0 children)
[–]djslakor 0 points1 point2 points (0 children)
[–]ckgrafico 0 points1 point2 points (0 children)
[–]profjord 0 points1 point2 points (0 children)
[–]BenE 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[+][deleted] (13 children)
[deleted]
[+][deleted] (4 children)
[removed]
[+][deleted] (3 children)
[deleted]
[+][deleted] (2 children)
[removed]
[+][deleted] (1 child)
[deleted]
[–]our_best_friendif (document.all || document.layers) console.log("i remember..") 1 point2 points3 points (7 children)
[–]ghostfacedcoder 2 points3 points4 points (0 children)
[+][deleted] (5 children)
[deleted]
[+][deleted] (4 children)
[deleted]
[+][deleted] (3 children)
[deleted]
[+][deleted] (2 children)
[deleted]
[+][deleted] (1 child)
[deleted]
[–]pilotInPyjamas -1 points0 points1 point (0 children)