1webpackJsonp([311371275398],{270:function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.__esModule=!0,t.pageQuery=t.frontmatter=void 0;var r=n(1),l=o(r),s=n(22),i=a(s),u=n(26),c=a(u),d=n(27),m=a(d),g=n(6),h=a(g),p=(t.frontmatter={title:"Angular Burnout",description:"I dreaded returning to programming during a recent holiday. It turns out Iâm just done with Angular. Is it useful in 2018?",slug:"/angular-burnout",dateCreated:"2018-03-23",dateUpdated:"2018-03-28",type:"article",cover:"./sleeping-dog.jpg",shareImage:"./sleeping-dog.jpg"},t.pageQuery="** extracted graphql fragment **",function(e){return l.createElement(m.default,{currentContent:e.data.currentContent,contentListResult:e.data.contentListResult},l.createElement(f,e))});t.default=p;var f=function(e){return l.createElement("div",{className:"wysiwyg"},l.createElement("p",null,"I had a feeling of dread I couldnât shake during a long holiday. To sum it up in a single sentence: âI donât want to code anymore.â"),l.createElement("p",null,"Maybe my passion finally dried up after all these years of programming? Time for something new."),l.createElement("p",null,"But after returning home, and returning to programming, I realised the dread was more specific: âI donât want to code in Angular anymore.â"),l.createElement("p",null,"Iâve been deep diving into ",l.createElement(h.default,{to:"https://angular.io/"},"Angular")," (v1 and 2+) for three years now, and Iâve had enough. After much thinking and many discussions, my conclusion:"),l.createElement("h2",null,"Thereâs no need for Angular in 2018"),l.createElement("blockquote",{className:"quote mt-12 text-lg"},"âI just need to learn Angular, then I can easily jump between any Angular project.â"),l.createElement("p",null,"This is a myth. All decent-sized projects Iâve seen slowly become custom and unique over time. Starting with Angular does not guarantee the entire project remains purely Angular."),l.createElement("p",null,"If a 3rd-party library is better than the Angular offering, developers shift over. Remember when UI-Router landed? Nobody used the official ngRouter. This wouldâve happened in Angular 2+ too if the community hadnât already swarmed React."),l.createElement("p",null,"My last Angular project exploded to include a Redux store with"," ",l.createElement(h.default,{to:"https://github.com/reduxjs/reselect"},"reselect"),", HTTP requests piped through"," ",l.createElement(h.default,{to:"https://github.com/ngrx/effects"},"@ngrx/effects"),", and composing smaller utility functions instead of creating full-blown services. Could any Angular developer jump straight into this setup? Nope."),l.createElement("blockquote",{className:"quote mt-12 text-lg"},"âCode endorsed by the Angular team is better quality and more stable than a bunch of random 3rd-party libraries thrown together.â"),l.createElement("p",null,"Angular has mostly settled now, but the early days saw huge breaking changes every month or two. It portrayed a lack of vision and focus, not stability."),l.createElement("p",null,"The official documentation had this gem:"),l.createElement(c.default,{image:e.data.imgDocs},"Excerpt from the"," ",l.createElement(h.default,{to:"https://github.com/angular/angular/blob/3e34ba01bdbeea237cb7c50e9cea3b0ed3b0606b/aio/content/guide/dependency-injection.md"},"official Angular docs")," ","about factory providers."),l.createElement("p",null,"This is not quality."),l.createElement("p",null,"The JavaScript community is energetic, active, and passionate. A group of random developers can deliver code that surpasses the efforts of the core Angular maintainers."),l.createElement("blockquote",{className:"quote mt-12 text-lg"},"âI like that Angular makes choices for me, I donât want to pick and choose.â"),l.createElement("p",null,"I get it. You want to style your React project, okay: CSS Modules or Styled Components? Or maybe Glamorous? Oh, Emotion looks nice!"),l.createElement("p",null,"Relying on what Angular provides is initially easier, but you can be locked into poor choices. TypeScript is forced on you, but it might be overkill for your needs"," ",l.createElement("span",{className:"text-sm"},"(the non-TS version of Angular is still undocumented all these years later)"),". RxJS observables for HTTP requests is also mandatory, but using Promises might be a better fit. Factories, providers, services, ngModules, zone.js, AOT compilation, the list goes on."),l.createElement("p",null,"Many projects succeed without this baggage. Is it necessary? Itâs a lot to learn, a lot to code, and a lot to maintain."),l.createElement("p",null,"Embrace the light-weight libraries that do one thing, and do it well. Celebrate that the JavaScript community provides you with so many options you can pick the best for your needs."),l.createElement("h2",null,"React reignites the passion"),l.createElement("p",null,"In the past weeks Iâve used React to build this website (powered by"," ",l.createElement(h.default,{to:"https://www.gatsbyjs.org/"},"Gatsby"),")."),l.createElement("p",null,"I can get into the flow and just code. Less uphill battles, more âjust doing it.â"),l.createElement("p",null,"React is light in all the right places, and complex only when I need it to be. I start with little and build up. I choose the libraries that best fit my needs. Freedom and power."),l.createElement("p",null,"I love tying together tiny stateless components. It barely looks like framework specific code, and is super quick to scaffold. Goodbye NgIf, NgSwitch, NgFor and all that nonsense."," ",l.createElement("span",{className:"text-sm"},"(Fun fact: adding ",l.createElement("code",null,"else")," to ",l.createElement("code",null,"*ngIf")," was a ânew featureâ in Angular v4"," ",l.createElement(i.default,null,"ð"),")")),l.createElement("p",null,"I have only scratched the surface of React, but I canât deny this feeling. The developer experience is A+ so far. Iâm back in the game!"))}}}); 2//# sourceMappingURL=component---src-content-blog-2018-goodbye-angular-content-goodbye-angular-js-4cf6f68f6ccadb0a6733.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.