8

Ask DN: Angular, Ember, Backbone, Meteor.. Where do I start?

almost 9 years ago from , Front-end developer

I've been learning JS and jQuery and have been wanting to take a step and start playing with frameworks.

How well should I know JS before diving into one of these? Which one is the best for starters? Which one has a greater ROI for the time spent learning it?

21 comments

  • Account deleted almost 9 years ago

    Lame answer coming but, just pick one and run with it. Angular is the most popular of the three and has a large community built around it, so lots of people with advice. It also is more approachable than Ember IMO (I have no experience with Meteor). Ember provides a rigid framework, while difficult to get up and running, very powerful once you get going with it.

    At work we use both Ember and Angular. People have favorites, but it seems once you learn one, it's a bit easier to jump into another one.

    Also, my work is teaming up with the Ember creators to do a intro class of screencasts, if you decide to do that direction: http://buff.ly/1yu4bEa

    Not cheap, but super thorough.

    2 points
    • Crampa ...Crampa ..., almost 9 years ago (edited almost 9 years ago )

      Angular is great, but recent news has developers worried.

      Google announced Angular 2.0 this week which is not backwards compatible with Angular 1.3. The syntax is radically different. Say good by to scopes and controllers. It's almost an entirely new framework.

      I would hesitate using such a framework (especially in a professional environment) because there is no guarantee it will be supported 8-12 months from now.

      For OP, who is just learning JS, Angular is fine, but be weary of investing time (or money) into Google's 2-3 product life cycles.

      4 points
      • Jeff EscalanteJeff Escalante, almost 9 years ago

        On top of that, angular is very foreign and un-javascript-esque. Angular's patterns are unique to angular. It's main benefit is that you don't have to bind js to selectors because you just put the js inline in the html tags, which results in less code. However, this becomes unmaintainable if you are working with a large complex app, and you need to rely on creating custom elements, which is just as much if not more code than just running a binding in the first place.

        While angular is wildly popular and is currently "the hotness" I would stay far away from it as a beginner because of all the issues mentioned here. Backbone is a very bare-bones and javascripty place to start, and you can stay with the comfort of jquery while you need it. If you are cool with backbone but finding that it doesn't give you enough pattern abbreviation or structure, graduate to marionette, which provides all that as well.

        4 points
      • Gabriel Garrido, almost 9 years ago

        Very interesting, wasn't aware they had announced a new iteration. I'm mostly interested in really grasping pure JavaScript but I wanted to try out a framework to build a DN clone as to learn the ins and outs of it. How does Angular compare to Meteor? I read through some of Meteor's documentation and it looks great for building that project.

        0 points
      • Julian LloydJulian Lloyd, almost 9 years ago (edited almost 9 years ago )

        In a Q & A session, developers asked how long Angular 1.3 would be supported. Brad Green replied:

        A reasonable expectation would be that after we release 2.0 final that something like 1.5 – 2 years beyond that we would support 1.3 for things like bug fixes and security patches.

        The team also indicated that there is no migration path from Angular 1.X to 2.0, though they left the door open for this possibility. There is no release date set, but the consensus is that version 2.0 will be finalized late 2015.

        § Source


        That time table suggests that Angular 1.3 will be supported until Early 2017, perhaps even 2018. I think it’s a dramatization to suggest that Angular won’t be supported 8–12 months from now.

        As a framework to learn and help facilitate more advanced JavaScript development, 3 years is plenty of runway; I wouldn’t recommend letting the announced changes of Angular 2.0 deter the OP from exploring Angular 1.x.

        1 point
  • Dylan BaskindDylan Baskind, almost 9 years ago

    So firstly, how well should you know JS - I imagine you'll be a bit hamstrung trying to express your intentions in code until you feel "fluent" with JS (assuming this is your first dive into programming). Using all the higher level things that live on top of a language (i.e. frameworks, plugins etc. etc) becomes alot easier once you know the ins and outs of the language.

    In regards to actual frameworks: I'm tech lead on a pretty large Angular project (about 75k lines-of-JS-code). We did a lot of due diligence on which framework to choose. I think the thing to be aware of is that they are philosophically different:

    Ember - is about "convention over configuration" - i.e. if you structure things the way Ember wants you to, you can get a big boost in power + efficiency (i.e. instead of actually telling the framework about the structure of your app explicitly, it assumes these things). This rigidity can actually be great for beginners (I certainly benefited from the Rails Convention-Over-Configuration approach), but it sucks if you want to structure things differently.

    Angular - is generally more lightweight. I love it, since I work with it day-in and day-out - however, as some of the other posters have mentioned, its pretty idiosyncratic - it does things in its own special Angular way. Some of the design decisions have been great, some of them I think are regrettable. We really use Angular just for its data-binding facility.

    For "advice" on where to start - its going to be a head-scratching, frustrating - but really fun! - experience no matter where you start; as Kristin Lasita said: "just pick one and run with it" --- once you've gotten fluent with JS + one framework, the rest will follow a lot more naturally and easily.

    1 point
  • Ian GoodeIan Goode, almost 9 years ago

    Unless you have a project in mind to work on, just continue learning JS. Angular, Ember and Backbone are different enough that the project can influence the 'best' choice. Meteor is even more different because it's trying to be a 'full stack' solution.

    Just don't learn a framework unless you're building something with it. Build something small just for yourself. That's how you learn frameworks.

    1 point
    • haki benitahaki benita, almost 9 years ago

      I agree. SPA's frameworks are widely misused (and abused!). most frameworks are beneficial only for large scale SPA's - most sites and services are not.

      I second Ian advice - stick with the basics and work your way up as needed.

      0 points
  • Whisky PetersWhisky Peters, almost 9 years ago

    each framework is a tool with pros, cons, use cases, etc. just as there are many ways to drive a nail through wood, professional carpenters understand the best option for a certain type of nail, wood density, what have you.

    angular is great for building big apps and there's a lot of open source tooling around the development workflow. ie. the "full-stack" yeoman generator is awesome, it will scaffold out an entire project using Google's best practices including the complete MEAN stack (mongodb/mongoose, node/express, angular), socket.io interface, both unit and "end to end" tests, etc in a matter of seconds.

    as robert mentioned, angular is changing a lot.

    also, angular has a pretty steep learning curve and is overkill for "vanity" sites. it's really meant to build big, data-driven applications.

    if you are looking to the future, i would strongly suggest skipping the "frameworks" altogether and jump straight into ES6 and Web Components using the Traceur compiler and Polymer, both Google projects. angular 2.0 uses ES6 and is moving in the direction of web components as well. I've found working with web components to be extremely intuitive since they are simply DOM elements with native, public APIs that you can access using vanilla js

    1 point
    • Gabriel Garrido, almost 9 years ago

      jump straight into ES6 and Web Components using the Traceur compiler and Polymer

      Can you expand on this? Sounds really interesting.

      0 points
      • Daniel JostDaniel Jost, almost 9 years ago

        Polymer is a Google-backed project that makes it really easy to get started with Web Components (you can see examples on the Polymer site). Mozilla has a similar project called Brick.

        Traceur allows you to write ECMAScript 6 and have it work in modern browsers.

        The frameworks you mentioned have varying degrees of support for Web Components and ES6, but if you want to go down this route you should do some homework and see if the new features and future compatibility are worth the tradeoff of having a functional, ready-to-go framework right now.

        0 points
  • Anastasiia Stefanuk, almost 6 years ago

    You are the only one, who can make the right choice here. You can start using one of these technologies without good skills at JavaScript and improve them in the process. It has always been a matter of requirements, so you should probably check out what features does each of them have and then make a decision. Though the popularity means a lot, it's important not to choose a framework by it because things might change very fast. You should probably start with React though, it doesn't have a steep learning curve. Anyway, you should check out an article with React vs Backbone vs Angular comparison. It might help you a bit. Number of businesses using Backbone JS in different countries

    0 points
  • Sacha GreifSacha Greif, almost 9 years ago

    There was a thread about this before I think, maybe you can look for it. I should say though that Meteor is different from the rest. It's both client and server-side.

    In other words, with Angular you still need a Rails or PHP app to actually make things work. Meteor replaces that part, too.

    Also, if you want to get started with Meteor, the first eight chapters of our book are free this week: http://book.discovermeteor.com/starter

    0 points
  • Jeff WhitfieldJeff Whitfield, almost 9 years ago

    Check out CanJs (www.canjs.com). It's light, extremely fast and relatively easy to work with.

    The thing about Angular that I don't like is that it's soooooo abstracted away from JavaScript that it makes testing really hard. To me, it's almost too opinionated. I can only imagine that v2.0 isn't going to be any different.

    I had thought about Knockout.js and Durandal...till it was announced that the Durandal team was moving on to help develop Angular 2.0.

    My advise is to keep things simple. it's why I decided to give CanJs a try. It just seems simple, fast, easy to manage, easy to test, but not so abstracted out as to make using JavaScript a pain in the ass.

    0 points
  • Emily SaforrianEmily Saforrian, almost 9 years ago

    Meteor is a very fun framework and you can get something setup really quickly with it. Unfortunately, it's such a unique flower that you might be better served to learn something else like Backbone or Angular.

    In terms of job prospects, last I checked it seemed like Angular is the way to go in terms of hire-ability.

    0 points
    • Gabriel Garrido, almost 9 years ago

      Given the recent announcement of Angular 2.0, is it still worthwhile learning Angular 1.0? Also, why would you say Meteor is such a unique flower?

      0 points
      • Emily SaforrianEmily Saforrian, almost 9 years ago

        Meteor is unique in the way that you create your 'models', bind events, it's actually not asynchronous and it's essentially the same coding for front-end and back-end.

        As for Angular, I'm not an expert. From what I understand there may not be a direct migration from 1.0 to 2.0 which means there will be tons of legacy work around.

        0 points
  • Nick MNick M, almost 9 years ago

    If you're been learning javascript, continue learning Javascript. Angular, React, Backbone, Meteor, etc are all frameworks - some group of people's suggested way of doing things.

    My suggestion is to pick up a book like Crockford's JavaScript: The Good Parts (http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742#) or Resig's Secrets of (http://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X/ref=pd_cp_b_0) and study it to really understand how js works. Once you feel comfortable, you can take your pick of any framework out there and be able to get into it quickly. The books may be seem dated, but the concepts don't expire (they're at least still applicable until ES6 comes around).

    0 points
  • Jonathan White, almost 9 years ago (edited almost 9 years ago )

    Personally I started with Angular. If you know Javascript - design patterns, how prototypal inheritance works, etc. you shouldn't have any issues getting your feet wet in Angular. It's still a work in progress (and in need of better organization) but here is a compilation I created of resources I found useful for learning Angular. The main thing to remember when starting Angular is the 80:20 rule, where 80% of your time should be spent reading and understanding Angular concepts and 20% implementing them.

    0 points
  • Malte NuhnMalte Nuhn, almost 9 years ago

    I'd suggest angular as well. We (Kami) have been using Angular for our creator app, and while there are various things 'wrong' / 'broken' / 'slow' etc about it, it forces a lot more structured thinking. If you already come from an engineering background that means it'll be familiar - if not, it'll change your approach to Javascript.

    On the same note, react (by Facebook) has similar benefits, and one-way data binding can be a blessing in many circumstances. It's also (a bit) easier to learn IMO.

    0 points