4 ms·
As someone actively rolling their own JavaScript framework (more as a learning exercise than for anything else), I second the opinion that AngularJS is uniquely
by calebgilbert 13y ago
As someone actively rolling their own JavaScript framework (more as a learning exercise than for anything else), I second the opinion that AngularJS is uniquely hard/blackboxed compared to other JavaScript frameworks (which I frequently refer to in order to guide my own efforts).
For instance Backbone is pretty much what would happen (give or take) if all the JavaScript books on how to program OOP and MV* got together and build a JS framework. It's not fancy, it's not "magic", but it is very approachable in terms of advanced standard/best/popular JavaScript programming practices.
AngularJS left all that stuff behind and built their own little world. It might even be a great world, but on the surface or to the implementation-level developer has little to do with "regular" advanced JavaScript programming techniques/patterns.
To me it's a bit like the JavaScript version of Drupal, which gives you a ton out of the box, but is just it's own whole world of conventions etc, that has little do with anything seen outside of itself.
- ryanisinallofus 13y ago"JavaScript version of Drupal" Ouch, but accurate.
- anentropic 13y agoThis just put me off AngularJS
- Bahamut 13y agoGive it a try - that comparison is pretty bad IMO.
- crabstance 13y agoUgh. I remember being in love with Drupal, before the betrayals, the lies and the abuse. I need a bath.
- marknutter 13y agoWow, this could not be further from the truth. Angular is much more similar to Rails than Drupal. Like Rails, it magically takes care of some of the more routine and annoying parts of front-end development like DOM manipulation and testing, but beyond that you're just writing javascript without having to worry about making sure your views are being updated. To extend the analogy I would compare Backbone to Sinatra. It's much smaller, allows the developer to make more choices, but takes care of less details. So if you prefer Sinatra over Rails, you'll probably prefer Backbone over Angular or Ember. If you like all the magic Rails has to offer, you're probably going to feel right at home with Angular. But comparing Angular to Drupal is ridiculous.
- ryanisinallofus 13y agoEmber is to Rails is accurate but there isn't much like Angular in server side land. Maybe Plone?
- mmatants 13y agoActually, I would compare AngularJS to Node's Express or Ruby's Sinatra. Because by and large it's actually a set of highly reusable and composable blocks that make very few assumptions about what you're trying to do (aside from something vaguely DOM related). It's a fairly pure look at the MVVM metaphor and does not even assume you're trying to do CRUD or RPC or whatever. Heck, you're not even tied to using client-side routing.
- ianstormtaylor 13y agoPlease don't compare it to Express. Express is a beautifully simple, and clean framework that strives to always have the least magic possible. You can see that goal reflected in the simplicity of its documentation as well. You can build on top of it with any other node modules you want exactly because it doesn't make strict assumptions about your code. If you were to compare Express to any front-end framework it would be Backbone. Angular is not simple in any since of the word. (Especially if we're talking about its documentation.) And it's components are only reusable inside the Angular bubble.
- aidos 13y agoI really don't think it's accurate at all. Can you qualify it in any way? For me, Drupal sucks for developers because you're configuring a bunch of objects to try to build a system but you're a) at the mercy of the initial design and b) going to run into hook soup hell, especially once a couple of plugins are installed. Angular is nothing like that. You have a few classes of things you'll create. They're all well thought our and have very specific uses. None of them constrain you in any way, all the code inside is yours. I don't get the comparison. I would never touch Drupal again however you would have to produce a very convincing argument to move me off Angular.
- politician 13y agoIf you're happy with Backbone, and would like declarative data-binding to views without the fuss, check out https://github.com/politician/outback https://github.com/politician/outback.
- camus 13y agoBackbone source is insanly easy to read , and it's short. Angular's on the other hand ... but that's the price to pay for it's features. I would not call Angular magic. Basically there is a "loop", the digest cycle , whereas in Backbone you would add Backbone components to your code. AngularJS creator worked at Adobe on Flex , and Adobe in fact attempted to create a "AngularJS" for non developers bundled with Dreamweaver ( Spry framework , but databinding was only one way). I like AngularJS but since i dont do form centric apps ( more reactive documents with a lot of animations,svg or canvas) i went with Ractive + Backbone. Ractive is easier to learn and to use. But AngularJS is pretty RAD when you have a lot of forms ( an admin panel ,etc ...), and provides a big testing plateform too. > To me it's a bit like the JavaScript version of Drupal hmm yeah maybe , drupal hooks are a bit like backbone directives in spirit.
- troyk 13y agoThanks for mentioning Ractive (http://www.ractivejs.org/ http://www.ractivejs.org/), first time I've seen it. I'm wondering why you would prefer angular for a form-centric app? I've used angular and rivets.js + backbone with success, my preference being angular but Ractive looks like a way to get awesome templating and databinding without committing the entire app to a single monolithic framework. It also seems that server side rendering is more reachable with it's mustachy roots.
- rich_harris 13y agoRactive creator here - yes, Ractive runs in Node. You create an instance similarly to on the client (ractive = new Ractive({ template: myTemplate, data: myData }) - obviously you don't specify a container element), then use ractive.renderHTML() to get the result.