11 ms·
JavaScript frameworks and topics to learn in 2017
- moxious 10y agoYeesh. In fairness it's a fine list, but you can be an excellent JavaScript developer and know less than one third of what's on that list. Ambitious JS lifers maybe can get to most of that, but for people who value some breadth of knowledge across tech, I'm not sure even pursuing such a list is a good idea.
- faceyspacey 10y agoAmbitious JS lifers lol
- catshirt 10y agough- how is Angular so popular?
- moxious 10y agoThis comment reads like a HipsterHacker tweet
- catshirt 10y agoshow me on the doll where the framework touched you
- ehnto 10y agoI think it's standing in the industry scratches the enterprise itch, so it's popular amongst professionals and corporates. You can't get fired for picking Angular, in other words. As to how it came to be in that standing, it was and likely still is a very powerful platform.
- catshirt 10y agothanks for taking my question seriously. seems like the only really good answer. but of course, "enterprisey" has never really been a good litmus for "correct" or "sane" or "efficient". it's not a coincidence the Java ecosystem became the brunt of so many jokes. i can't help but wonder how seriously it would have been taken if it weren't a Google project.
- weremine 10y agoIt's makes no difference if it's a google project. It fulfills a need, and works. Just because you have a preference for something else doesn't make it any less effective.
- catshirt 10y ago"It's makes no difference if it's a google project." you seriously suggest that Google sponsoring a project couldn't possibly catalyze it's success? "Just because you have a preference for something else doesn't make it any less effective." i can usually bear oversimplification- incorrect- or patronizing- but both all three in the same post is pretty testing on my patience.
- weremine 10y agoAll I'm suggesting is that just because you are a self described 'react fanboy' (using your own words here from your comment history), it doesn't make Angular less useful in the real world. I applaud your use of React, but we are using angular2 and it is going just fine. All the best.
- deleted 10y ago[deleted]
- tukelully 10y agoIn fairness, your question hardly reads as a question and much more like a halfhearted sigh from someone who hasn't given it much thought. In response to the mention of Google backing it, I don't see how how that should discredit it in the slightest. Sure you don't see anyone getting fired for choosing Angular. That's because it's supported by a business that runs the business on it. In this case, a company filled with some of the best engineers in the business. It also was and is damn good at certain things. Pretty sensible choice.
- weremine 10y agoBecause it solves real world business problems. Some people need to build large systems in a SPA framework and Angular is good at this. Not everyone is building a cheap hackathon twitter clone in their spare time. For some of us the JS framework is solving business problems, not hobby JS side projects using the latest hip JS frameworks.
- catshirt 10y agodo you answer questions this way in real life or only on the net under alt accounts?
- wwweston 10y ago> Because it solves real world business problems. Some people need to build large systems in a SPA framework This sounds...circular. "AngularJS is a framework for building large SPA framework systems solves the real world business problem that business need to build SPA framework systems." Frameworks don't solve business problems, practically by definition; they're potentially the common factor across software systems that solves part of the technical problems of developing an application. That's assuming a framework is any good, of course, but we're talking about Angular, so by all means: tell us what development problems Angular solves for you. And if I were defending Angular, I don't know that I'd invoke the problems of fashionability and the bleeding-edge of change, because it's hardly insulated.
- ng12 10y agoI think you're wrong, but only because you went in the wrong direction. In my experience Angular is best for the "I don't care how, I just need it done" crowd. The architecture, data model, routing setup, etc are all defined for you. However I've found React/Vue/Ember are better for "I need to create a complex system with a long shelf-life that will be touched by many people".
- blairanderson 10y agoPivotal labs chose it a few years back and all the enterprise wonks haven't turned back.
- Sivart13 10y agoSpeaking as a Pivotal Labs employee who has done a shitload of Angular 1 development, this is not true. I still like Angular personally, but enthusiasm is definitely way higher in the React direction unless the client demands we do something else.
- deleted 10y ago[deleted]
- pluma 10y agoBecause it appeals to programmers coming from a background in C# and Java. It can feel out of place to programmers used to jQuery and Node but it's very appealing to the enterprise mindset. Mind you, there are people using Angular outside the enterprise (e.g. via Ionic), but it's definitely one of its main strengths. For anyone wondering: detractors criticise Angular for relying on a lot of idiomatic concepts (compared to other frameworks that largely build on concepts that apply to JS in general) and creating a lot of abstractions to the point where Angular can be considered its own language (as is certainly the case with its template language despite people saying it's "just HTML"). All of these things are the way they are for good reasons, it just makes Angular entirely unappealing to a subset of the JS community. Luckily there are plenty other frameworks to choose from.
- yulaow 10y agoBecause is a Built-in solution. I have not to look for extension libraries like I have with react, and everytime try to choose between a lot of crap alternatives to a single functionality I need on react. I just pick Angular and everything I need is already inside that framework, far far far less headaches.
- wmfiv 10y agoPersonally I value mature, well understood solutions. Angular delivers that and the ecosystem around it is finally about there. I can use ui-bootstrap (Angular material not as much) on a relatively large application without running into defects at every step. And there is an enormously high probability that the answer to any issue my team runs into is one Google away. I'd much rather stay on the well beaten path with a mature, less sexy, less efficient solution than hack my way through the jungle with something more contemporary and powerful but less mature and less well understood.
- eranation 10y agoLearn programming, not just frameworks. Frameworks will come and go, but the core programming concepts (good design, algorithms, cleanliness, simplicity, data structures, architecture) will tend to stay relevant longer. Learn the principles of Reactive Programming, not just RXJs, learn the philosophy of Redux, not just its syntax. You won't be able to keep up with it otherwise. Source: a guy who was an actionscript guru 15 years ago.
- Ka-Ching 10y agoThumbs-up to your words of wisdom.
- sgdesign 10y agoThis is a nice-sounding programming mantra but it doesn't make much sense in the real world, in my opinion. Learning the "philosophy" of Redux is a natural by-product of learning how to actually use Redux. To me this is the equivalent of saying "learn molecular chemistry, don't follow recipes" to someone who's trying to learn how to cook. It may be true that the most experienced chefs have a deep understanding of chemistry, but it's much more practical to start from the surface and dig deeper, compared to overwhelming newcomers with "principles" and "philosophies" right off the bat.
- bicubic 10y agoThat's a pretty apt analogy, really. If you just want to be a line cook at a no name franchise, then by all means, blindly follow recipes. If you want to understand what you're actually doing and have the ability to create new stuff without using a cookie-cutter template, yeah, you're going to need to go deeper. As a uni student, I had some degree of disdain about being taught from first principles when I really just wanted to build games and apps, but the further I get in my career, the more I appreciate this groundwork. Recipes and frameworks come and go. Theory and first principles are timeless.
- gshrikant 10y ago>> To me this is the equivalent of saying "learn molecular chemistry, don't follow recipes" to someone who's trying to learn how to cook. A more appropriate analogy would be learning specific recipes vs learning the flavour and texture of individual ingredients, so that you can mix them in new ways and learn how existing recipes work. You might want to start at the former but to be even a 'good' cook, you need to learn the latter. I guess this is more in line with the sentiment the GP is trying to express.
- aeosynth 10y agoIs anyone using Tern as an annotations-free type checker?
- ericelliott 10y agoYes.
- andrew_wc_brown 10y agoMithrilJS. Such an underated js framework.
- roryisok 10y agoI've never even heard of mithril. Very easy to be a developer and read threads like this and suddenly think "oh crap I don't know ANYTHING!"
- pluma 10y agoJust remember that attention is a limited resource and there are very likely things you know that would trigger similar reactions in others. We tend to compare ourselves with the extreme outliers and even then we overlook their deficiencies and assume they additionally know everything we do. We also tend to conflate all the people we see talking about things we don't know as if they were all the same person. It's okay not to know things. It's okay to make trade-offs. It helps to have some spatial awareness what else is going on outside your sphere of interest, but pick a handful of things and focus on them instead of trying to learn everything.
- bigshlappas 10y agoThe first point in this should be Not JavaScript!
- heavenlyhash 10y agoI want a javascript framework that allows me to update a page incrementally, but also always works correctly and contains full content from the first server-side page load. Are there any options for this? Are there even keywords I can search for that discuss this? Sure, this files under "anything is possible", but honestly, I'd like a javascript framework that doesn't actively fight me also having static content. Any of these libraries that put their document derivation logic front and center are ipso facto refusing to compose well with a simple static first page load that renders fast and then gains progressive enhancement from the JS.
- paradite 10y agoI think Universal Angular was designed to address that issue with server-side rendering: https://github.com/angular/universal https://github.com/angular/universal It hasn't received much attention from the community apart from the occasional keynote presentation and it is not linked anywhere on the official documentation for Angular 2. However, the description now says "Current Status: Merging Universal into Angular core".
- pomber 10y agoIf you are talking about an app shell and lazy-loading page fragments when you need them, check the PRPL pattern. Polymer provides an easy way to do it.
- rk06 10y agothat is pretty vague. can you elaborate more? preferably post an example of what you want and what is happenning.
- bigmanwalter 10y agoIt's no longer cool on HN to use it, but jQuery-Pjax (https://github.com/defunkt/jquery-pjax https://github.com/defunkt/jquery-pjax) solved this problem years ago in a minimally intrusive way. I build all my projects with it. It's the only SPA framework that allows for full server side rendering after minimal configuration. It also manages to do this without introducing needless abstractions into your code. Even more magical: it works with any server side language or framework you desire! The trick is that all rendering gets done server side and the SPA framework is just a dumb little script that replaces old DOM nodes with the newly rendered bits as they get sent down the pipe. You only bring the logic client side as needed, but defer work to the server 99% of the time. So no need to reproduce your rendering logic in 2 places. Someone on HN has been hyping up his own variation on the technique and calls his framework IntercoolerJS but I haven't felt the need to move away from jQuery-Pjax.
- enraged_camel 10y agoHalf of the items on this list - basically, anything not under "JavaScript & DOM Fundamentals" - will probably be invalid by April 2017. :P
- andretti1977 10y agoI must be honest, my experience with node was very short but this article suggests me that working with js may be really more complicated than working with java. Too many frameworks (which often lives too shortly), too many things to learn, it's overwhelming...sometimes it seems to me that working with js has become so difficult that working with java and jquery is still easier and better (i know lot of people will throw me hate for this comment!)
- tambourine_man 10y agoI have no problem with difficulty (if interesting), but I get completely blocked by, what seems to me, needless complexity. The will to learn vanishes completely.
- andretti1977 10y agoI agree and this is exactly what i feel: too much complexity that seems needless. I hardly have cases where i can't develop reasonably complex frontend and must use angular or react so i can't stand all this javascript frameworks useless (imo) complexity.
- jim_d 10y agoI think the interesting thing is that for 90% of what is being built most tools are overkill and JQuery is really good enough. I say that as someone that started using React/Flux almost 2 years ago, and as someone in the midst of moving from Flux stores to Redux. The power of these tools is when there are large teams involved, when the complexity of the state on the FrontEnd is extremely high, and when you absolutely need a Single Page Application. Most of the time all 3 of those conditions aren't true, and in those cases you're better off using something like jQuery which is boring, easy to reason about, and everybody already knows it well.
- erik14th 10y agoApples and oranges. You're comparing SPA paraphernalia with a library that basically gives you a sane cross browser JS API's and some goodies. Yes, you can develop highly interactive, reasonably complex web apps with jQuery, but then you would have to develop a lot of abstractions, guidelines and whatnot to keep the thing from exploding. That's pretty much what those SPA libraries and frameworks are. About server side, IMO there's no inherent advantage on picking node over java other than the fact you'll have one less language in your stack(or not, since you may end up using TypeScript or some other compile-to-js language).
- dictum 10y ago> Webpack: The most popular bundler for standard JavaScript look for simple starter kit/boilerplate config examples to get things running fast Unless you're already familiar with a tool, I'd suggest starting with the very Hello, world basics. For Webpack, that's creating an empty project and incrementally adding config, starting with just an entry point (use a simple script importing some modules) and an output filename. Add one loader/plugin at a time. Move into boilerplates once you're familiar with the basic concepts. (I wish more projects had a Concepts page like Webpack now has: https://webpack.js.org/concepts/ https://webpack.js.org/concepts/) A boilerplate is another person's code, and while it's good to avoid NIH, unless it's superbly documented, it contains tricks and workarounds that only cloud real understanding. --- Eric wisely started the article with JavaScript & DOM Fundamentals. For people like me, who were familiar with pre-ES6 JS but weren't actively writing JS lately, the basics themselves have changed a bit.
- gamesmaxed 10y agoWait, are we actually praising the webpack docs now? How far have we come.
- kaoD 10y agoI think you're being downvoted due to strawman ([s]he praised documenting concepts, not the documentation as a whole) but you're right though. I've never dived into my toolchain code (due to missing or frugal documentation) more than I've been forced to with Webpack. It suffers from tutorial-like instructions and a lack of formal list-like documentation, which leads to conflicting or confusing configurations (very easy since there are multiple ways to do the same thing, shortcuts found in the CLI but not in the configuration, etc.) I love Webpack, but the documentation is really rough in some places.
- dictum 10y ago> ([s]he praised documenting concepts, not the documentation as a whole) Exactly. I wish I could help with docs for Webpack, but personally I'm willing to trade extensive documentation for a friendly community. These aren't mutually exclusive of course, but I've seen my share of OSS projects with a bad attitude towards beginners and people who are just missing some detail for the whole thing to click. Likewise, my point re: boilerplates would be moot if most boilerplates had good docs (even if just a detailed README).
- Kiro 10y agoI vote for React + MobX as the goto stack of 2017.
- progx 10y agoI vote for the things that solves my development problems the easiest und best way.
- thomasrognon 10y agoSeconded. React+MobX+Typescript+Node is my preferred fullstack.
- macpete 10y agoLearn in order to unlearn one year later - welcome to .js !
- jgord 10y agoAgree Vue and mobx look promising ... I would say Ramda.js is most deserving of much wider adoption.
- voltagex_ 10y agoHighly recommend spending at least a few hours on https://javascript30.com https://javascript30.com if you get a chance.
- mathgeek 10y agoEven as someone who knows enough JS to work in it when necessary, I found js30 to be a ton of fun. Highly recommend it.
- ExpiredLink 10y agoOr wait another year and pick the winner of the JavaScript framework war. It's unlikely that we will see new and relevant(!) JS frameworks over the next few years as we have seen in the past. 20 - 25 years ago dozens of Windows frameworks appeared on the market. Eventually VB won. History is repeating itself.
- fenomas 10y ago> Learn [Vue.js] after you have learned React or Angular. Hugely disagree with this. I really like Vue - but in my (very limited) experience, its appeal is that even though it's not as powerful or flexible as React or Angular it's way easier to learn and get moving with. Fewer new concepts, less new tooling, no ecosystem of related stuff to consider, etc. I'd have suggested learning Vue first, and sticking with it until you outgrow it. If you start with Ng/Rx, and get to where you're comfortable and have a tooling/workflow around them that works for you, then sure you could still learn Vue afterwards but I'm not sure what it gets you.
- stephenhuey 10y agoI'm with you. I went with Aurelia for a new project (which is unfortunately missing from his list) and would recommend it for everyone who wants to code an application using web standards. I briefly considered Vue but in this case needed a little something more and I found Aurelia to be more straightforward than React and Angular, especially after 14 years of application development in a variety of languages.
- Bahamut 10y agoIf I had to guess, the recommendation is due to that there are simply more jobs around React and Angular out there. There is a practical bent to the lists in the article.
- d13 10y agoThe article recommends learning both pure functions AND closure? So is the point of learning to use closure is just so that you know why you should never use it?
- uryga 10y agoafaik, and based on my limited experience, closures are used quite often in pure functional programming.
- na85 10y agoI'm going to make my 2017 enjoyable by not working with JavaScript at all.
- douche 10y agoIf only I could. I may try to call the banners for a campaign to start using Typescript, though.
- FrancoDiaz 10y agoI'm looking for a React Admin/Dashboard template. There's various themes at https://wrapbootstrap.com/ https://wrapbootstrap.com/ but haven't been totally satisfied with the React offerings.
- doomtop 10y agoGreat list! But I was perplexed by the text editors mentioned. Author claims to be looking at trend data, but seems to have a bias against Subljme Text editor. I don't know if there is some connection to Atom or VSCode, but it seems easily verifiable that Sublime and vim are vastly more popular than other editors mentioned, yet Sublime is inexplicably absent and vim is mentioned last and sort of offhand as more of just a tool you have to know for ssh sessions.
- ericelliott 10y agoSublime is absent because a lot of previous sublime users are now Atom users, and it is now the more popular editor by a large margin. Those comfortable with Sublime will find Atom very inviting.
- Can_Not 10y agoExcept when you need to open a file more than 100 lines, atom is nicer.
- adamnemecek 10y agoYou should check out cycle.js https://cycle.js.org https://cycle.js.org. I'm always surprised it's not THE js framework du jour.
- jaseemabid 10y agoThe only issue with the blog post is that most of those tools will be obsolete before you finish reading. JavaScript as an ecosystem needs mature robust solutions rather than a new way to do things every other week.
- themihai 10y agoWell said! Hopefully once wasm becomes mainstream this madness will stop.
- thesagan 10y agoReminds me of Gene Kranz's "Honest and Competent" speech he gave to his Mission Control team after the Apollo 1 fire in 1967. One thing he said in that speech has always stuck with me: "Nothing we did had any shelf life... he were too gung ho about the schedule... nobody said, 'dammit, stop!'" Link to speech: https://russ.garrett.co.uk/2011/01/30/tough-and-competent/ https://russ.garrett.co.uk/2011/01/30/tough-and-competent/
- coltonv 10y agoThat's simply not true. I'm kind of tired of hearing about this kind of stuff said about JS. This comment adds absolutely nothing to the discussion about this article. Did you even read the article before making this comment? It would appear you didn't since this is just a classic, low effort javascript bashing comment that mentions no evidence from the article. Every single thing he marks as important to learn is either 1. a mature library that has been around for years and is used in production at hundreds of companies (React is 3 years old and Angular is 6 years old, Lodash is 4 years old, Node is almost a decade old) or 2. is a fully specced and largely implemented feature of the Javascript language. How is Ajax gong to be obselete before you finish reading? How is Node, a nearly decade old, battle hardened runtime going to go out of style in 2017? By literally any definition JS builtins, functions, closures, callbacks, Chrome Dev Tools, React, Angular, Tern, ESLint, npm, git, Redux and Promises are all "mature robust solutions". They've all been around for years and are thoroughly tested and used. Many of them are used maturely in other languages as well, for example Futures in C# are basically the same thing as Promises. The author does mention some newer things like async/await, generators, and ES6, but all these are now official parts of javascript. They simply can't "go obselete", and all of these share ideas with other languages which are also, by any definition, mature and robust. The author does mention some libraries which are new and less proven, like RXJS, Angular2, MobX, Vue, Yarn, Typescript, and Flow, but did you notice how every single one of these has an asterisk? Which he specifically states means "strictly optional": Cool things to try out that may be useful tools, but not essential. Even most of these are several years old and perfectly mature anyway. Yes the javascript community moves quickly. Yes JS programmers enjoy trying out flavor of the month frameworks, but it seems I'm one of the only people who sees this as a great thing. People try out lots of new things and learn lots of new strategies, and in the end the ideas of these get incorporated into existing mature frameworks, making them better and more robust.
- daenney 10y ago> Node lets you use JavaScript on the server, meaning your users can store data in the cloud and access it anywhere. I don't see how using Node server-side has anything at all to do with user's capability to store data in the cloud.
- deleted 10y ago[deleted]
- alistproducer2 10y agoMy 2 cents. I would consider myself a JS expert as I have writen AngularJS and RequireJS clones. Personally, I don't agree with the path that OS JS dev has gone in recent years. The reliance on build systems and transpilers are fundamentally anathema to the spirit of simplicity and low barrier to entry that attracted me to the language and ecosystem inn the first place. I understand that as we have moved from web pages to web apps the increase in complexity was inevitable, but I question a lot of the tools being used now. For one thing, once we moved to creating full applications using JS, one of the concerns that tooling moved to address was maintainability. This is why MV* caught on and destroyed JQuery as a viable option for many projects. That being said, Angular pretty quickly swapped one kind of maintainability problem (refactorability) for another (over-abstraction and cyclomatic complexity). As for the dev tooling (webpack and company), one of the reason I avoid a lot of them is in my experience they can get in the way of maintainability. For example, I recently tried to pick up a 3 month old project in Android Studio and it took me around 3 hours just to get it to compile again because of updates and other tooling complexity. This NEVER happened using Eclipse. The same thing is happening and will happen when the apps being built today get dumped on some poor sod 3-5 years from now. Lastly, an example from my job. I was recently asked to update the verbiage on a sign in form built ~13 years ago. The devs decided to use some java framework that had buzz at the time named JATO. Jato literally doesn't exist anymore and building it is basically impossible. This is to say nothing of modifying it as all documentation has literally disappeared from the web. The devs picked JATO b/c they thought it would be easier to modify and maintain. Exactly the opposite has happened. They could easily have written the form (literally two input boxes and a submit) using plain JSP. If they had, that code would still be useful today.
- ClayFerguson 10y agoTypeScript is definitely by far the most important thing mentioned in the article. And no I didn't even read the article. I just searched it for the word TypeScript to see what it said. However, the author apparently is pretty clueless because he implied TypeScript has something to do with Angular. It doesn't. TypeScript is needed ANY time the runtime is JavaScript. Namely, in the browser. The only other technology TypeScript has ANYTHING do to with is JavaScript itself.
- ericelliott 10y agoIf you click through the links and actually read the content, I have plenty more to say about TypeScript, and why I consider it optional learning for JS developers.
- ClayFerguson 10y agoWell you've definitely misguided everyone by suggesting TypeScript is in any way related to Angular. There is absolutely no relation. You should fix that.
- jim_d 10y agoI'm curious what people think about type checkers in JS. I've been doing full stack development for the last few years and BE development before that. Type safety has always been worth it to me, we adopted Flow and haven't looked back, although some FE developers aren't big fans of it.
- ericelliott 10y agoSee "You Might Not Need TypeScript (or Static Types)" https://medium.com/javascript-scene/you-might-not-need-typescript-or-static-types-aa7cb670a77b https://medium.com/javascript-scene/you-might-not-need-types...