I wrote this answer on Quora for the question: which JavaScript frameworks should I learn and why.
Just copy it here so that I can add more to the answer later
———-
It varies vastly depending on your level of familiarity with JavaScript and Computer Science, your purpose (for learning? for building web-based games? app?)
Here are the 3 resources that I started with when I started learning JavaScript:
- JavaScript on Mozilla Developer Network : great references, search friendly, good tutorials and explanations.
- JavaScript : The Definitive Guide by David Flanagan: considered the Bible for JavaScript developer since 1996. Latest version also covers HTML5, ES5.
- JavaScript : The Good Parts by Douglas Crockford: you’ll be amaze by the insights and depth of this short book. Don’t believe me? Try this infamous example by open Chrome Developer Console and type:
0.1 + 0.2 == 0.3
. Now come back and read this book.
If you are new to JavaScript, I would totally recommend visit the first 3 resources and ensure you are aware of these concepts:
- Functional vs. Object-Oriented in JavaScript:
- Closure : what are closures, lexical scope, callback?
- Prototype & inheritance: what is it, why it matters, common mistakes, traps and gotchas with prototypal inheritance.
- Modular pattern in JavaScript (think RequireJS)
- Browser compatibility (heck yes, you can’t escape it even in 2017): ES5, ES6, ES7 ?
If you are familiar with JavaScript, here are some general purpose frameworks that I recommend:
- NodeJS: enough said about NodeJS: it’s suitable for full-stack development, wildly popular, well-supported, lots of resources and countless of available packages & development tools.
- AngularJS: MVC framework from Google to let you build SPA (Single Page Applicable) in no time. Good support from Google & the community, fast to learn, easy to test.
And then there are some libraries (not technically frameworks), but would be fun to play around with them:
- KnockoutJS: lightweight library, model-oriented, sort of MVVM to me, observables & computed properties are really nice though it lacks a strong middle-tier.
- ReactJS: good separation of concern, easy to build modular, reusable components for front-end (like window-based programming on steroids), mobile-friendly, fast (built by and used at Facebook).
- jQuery: mature, lightweight, fast for basic DOM modifications with very simple syntax and not too steep learning curve.
I would be able to recommend better if you can share what you want to achieve after learning these frameworks