Angular 4.0.0 Now Available
angularjs.blogspot.com
angularjs.blogspot.com
It does not 'feel' heavyweight or that it gets in my way too much, but the contrary is true. Of course, it has it`s quirks, as every larger lib have, but it`s pluses outweigh minuses by far for me.
Preferences aside, does Angular make you less productive than other options? Do you feel that you fight the framework? Can you finish non trivial frontend apps, involving 5+ team members, 'better', with cleaner code and much faster with other options?
This are just honest questions. I wanted to start some pet project in angular2 soon, but would listen to alternatives, maybe it is a right moment to try some of them.
I started using it when this app was very much a POC last summer, just as the Angular team was finishing up the 2.0 release.
I learned firsthand last summer the issues with using a framework that was still in the oven: constant updates and some dependency changes. That was no fun for some time.
But I'll say now that it was worth it. (Maybe I should have started a little later, post-2.0 release). But I'm now building out a decent sized and complex application much faster than I'd ever done before.
It is strongly typed, it is modular, and it has dependency injection. Oh and it's strongly typed. I can't emphasize the importance of this enough. I know you can use typescript without Angular, but that the Angular community and the docs are all in typescript make this a typescript-native framework.
I'll never look at JavaScript again if I don't have to. You and your IDE and the rest of your team can know an object's Type without having to scrounge around, it's such a blissful departure from JavaScript.
It definitely has a learning curve. If you're spinning up a simple web app it may or may not be for you. (...though now I use it to spin up simple web apps because I'm used to it and it's so good for that) But for anything complex that is being worked on across a team, I recommend you take the time to learn it.
It's not perfect, nothing is. But it is leagues ahead of any framework I've used on the front end. And having gone to Typescript, I will never use a native JavaScript framework again.
I use VS Code (with the Chrome debugger plugin) and that works like a charm. I don't debug javascript in the browser anymore.
TS provides source mappings to map the compiled javascript back to the source (similar to a .dll's .pdb maybe?).
It took me some time to set up the config file which proved to be a headache (because webpack was screwing with the source maps), but again once that was set up it has been a breeze to debug right in my IDE whenever I want.
Perhaps you can describe the steps you followed? I tried installing the plugin and launching chrome with the debug flag, then setting a breakpoint in vscode. Is there something I am missing there?
Moreover, Flow is pure annotation, which can be removed by Babel. And Flow is also backed by a large company (Facebook instead of Microsoft).
However, if you do want to generate JS, use a language that elminiates runtime errors almost completely, such as Elm or OCaml (through bucklescript or js-of-ocaml).
[1] The following presentation contains some scary examples of incorrect code not rejected by Typescript. I'd rather prefer Flow which errs on beeing too strict: https://djcordhose.github.io/flow-vs-typescript/elm-flow-typ...
Debugging javascript produced by Babel is generally hell in comparison. The transforms done by Babel are not designed to be human readable and they generally aren't.
Only Facebook doesn't care much to back or promote Flow, besides the occasional blog post, whereas Microsoft has created a whole IDE / VS Code support for it, great tooling, documentation, etc.
- Compile time means that it takes more time to debug anything.
- The rigid interfaces mean that I need to spend more time researching how to use various modules/libraries (maybe code completion would offset this problem but this is only possible with a heavy IDE that has intellisense or similar - Not Atom).
- When I want to test something quickly, I often get annoying compile-time errors along the lines of 'code is unreachable...' among others.
- It requires more planning to do anything (since you have to design the interfaces before you can start to implement). This is also not good if you just want to try something quickly and then roll back later.
- Changes to one class/interface tend to have a large cascading effect on other classes/interfaces so it takes more time to make changes to code - This happens with JS too but to a much lesser extent.
- Adds lots of unnecessary dependencies to my project.
- Complicates setup and DevOps tasks, Dockerizing, (E.g. due to version mismatches and thousands of other potential issues) etc...
The reason why I don't like heavy IDEs is because:
- They're slow and clunky (sometimes they freeze for a long time in order to index content)
- The use up a ton of memory.
- They make your team lazy when it comes to structuring your source code into proper folders (since you start to rely more on search features of the IDE to find things).
- They take ages to install.
- Support fewer operating systems.
- Are usually proprietary and difficult to customize.
- More prone to bugs.
Since you can pretty much type javascript in to a TS file and it will work I don't see this being valid.
Also planning is good, if your not thinking about the structure of your code (which does not take that long) then your just producing diarrhea.
- They're slow and clunky Not anything I've used. Eclipse and Visual Studio run nice and smooth on a decent machine.
- The use up a ton of memory. Who cares. Slack and anything based on electron uses hundreds of megabytes. Chrome regularly uses gigs. Most of the IDE's I use take less than 500 megabytes of ram, even phones have plenty.
- They make your team lazy when it comes to structuring your source code into proper folders Absolutely not. Your reasoning is that making things easier = making code worse. The IDE you use has nothing to do with your dev culture
- They take ages to install. Some of them do, notably Visual Studio. All the other ones I've used just take a few minutes. Also, who cares??? You only have to install it once, what is 5 minutes for an app you're going to use for thousands of hours???
- Support fewer operating systems. No. IDE's based on java run on almost anything. Again I think you're speaking from the experience of using visual studio.
- Are usually proprietary and difficult to customize. Also no. Every IDE I've used supports plugins and an unholy amount of configuration options. Every IDE I use is open source, again except visual studio.
- More prone to bugs. What? Why? How?
how can this be an issue? even javascript needs to be concated minified and whatever to take it into production. it's not like that any human writes minified and mangled javascript with direct gzip.
P.S.: I'm not a fan of TypeScript. But to say you need to compile it, is just an excuse.
Though it's just as easy to use a good IDE's build button (VSCode Ctrl+Shift+B for instance) or TS works well as a watch process that watches for saves and compiles them when you save.
Obviously, to each his own.
I'd encourage you try Typescript again though. Your given reason doesn't make much sense. Regardless of whether the language is strongly typed or weakly typed, you still need to use modules and libraries correctly. "Not having to research" means you're just going to end up throwing data at a library without knowing what it's expecting. The research has to happen in both scenarios, but with typed languages it's easier. The research is just in the code already. (Try VS Code, not a "heavy" IDE by any means, but it has native support for TS code completion.)
If I have any modular interface, you need to know what to pass me. If you're receiving data from me, you need to know the structure of what I'm sending back to you.
In a weakly typed language, you can guess at what data structure I'm going to want. You can fish around in my returned data for what you're looking for with no guarantees. You have to look for docs, which may or may not be up to date.
But in a strongly typed language, the code is the doc. You and I and your IDE and my IDE are all on the same page. And the docs are always up to date. You can't pass me data that I'm not expecting and you always know how to access the data I'm returning to you.
That's the idea. You think about what you're going to write in a strongly typed language rather than just throwing stuff at the wall hoping that something will stick.
> - The rigid interfaces mean that I need to spend more time researching how to use various modules/libraries
I don't understand this. In one case you have an API where the types of all the functions is available, so you can see almost right away how to use it. In the other case you have to rely on someone providing you really good documentation OR you read the implementation.
> - Changes to one class/interface tend to have a large cascading effect on other classes/interfaces so it takes more time to make changes to code - This happens with JS too but to a much lesser extent.
It's either you find the error at compile time or at run time. Don't kid yourself, there's a 'cascading effect' in both typed and untyped codebases, just in the typed one the compiler will help you find errors.
Granted, I'm not the biggest TS fan, I'd take Elm or Purescript, or even Flow. But your gripes seem to be directed to typed languages in general.
> That's the idea. You think about what you're going to write in a strongly typed language rather than just throwing stuff at the wall hoping that something will stick.
I think this is a valid point for developers who only have a few years of experience but I've been coding professionally for over a decade now - I don't need the compiler to artificially slow me down - I'd rather spend my mental energy thinking about the algorithm/architecture in its purest form without getting caught up in trying to satisfy the compiler's tedious requirements.
For me programming in a typed language is like using software that always asks you "are you sure you want to do this?" every time you tell it to do something. It's OK if you're a beginner, but I just find it frustrating.
I spent many years programming in ActionScript 3 and then Java so I feel like I've given typed languages a fair shot.
You'd be surprised.
There's a reason that developers after decades of dynamic languages turn increasingly to types (of which Flow and TS are examples in the JS world).
It's slowing you down because you've written code with errors. Those type errors are still in your dynamic code, you just can't see them.
> I spent many years programming in ActionScript 3 and then Java so I feel like I've given typed languages a fair shot.
I don't think you have, you've missed many wonderful modern type system features.
Algebraic types, for one, aren't present in either of those languages and are massively useful, replacing 'null' (with a type like Option/Maybe) and exceptions (with a Result/Either concept) in many languages that have them.
Not to mention, with a language that has type inference, you don't even have to write the type in many cases, and yet you keep the guarantees of a strongly typed language.
Why, otherwise you'd just throw random parameters in a module's functions and see what sticks?
>Compile time means that it takes more time to debug anything.
Most people compile their JS anyway, TS or not, with Babel et al.
>maybe code completion would offset this problem but this is only possible with a heavy IDE that has intellisense or similar - Not Atom
VS Code has code completion for TS and is similar to Atom. And even Sublime Text has code completion for TS (based on tools MS itself provides for "intellisense" style predictions).
>- It requires more planning to do anything (since you have to design the interfaces before you can start to implement). This is also not good if you just want to try something quickly and then roll back later
Doesn't make any sense. It's not as if you don't need to know the interfaces before you start to implement with regular js. Only there you need to hunt for the documentation to tell you what's expected to pass -- instead of seeing what the types are directly (e.g. with intellisense).
>- Changes to one class/interface tend to have a large cascading effect on other classes/interfaces so it takes more time to make changes to code - This happens with JS too but to a much lesser extent.
It happens to the exact same extend in JS. Only with TS you are shown where the problems are automatically, with JS you have to hunt those places or discover it at runtime.
The rest goes downhill...
That being said, Angular is still a valid option (haven't tried Angular 2, but from what I've read it's a nice upgrade over Angular 1). I'd still take React any day of the week over it, just for the simplicity it brings. Of course there are other drawbacks to using it, but nothing's perfect.
The concept of modules and dependency injection was nice before we had any sort of module systems, but at this point it's essentially entirely busy work, given tools like proxyquire when testing.
Template compilation errors are a nice step up from 1, but those that I've seen have been very misleading and have been the cause of wasted hours debugging.
Angular 2 makes extensive use of the Reflection API for metadata, which combined with the fact that angular-cli is hard-coded to perform static analysis (even if you disable AOT) is another pain point. I'm trying to build the equivalent to "react storybook" for our platform, and it's taken me about 3x the time it would have with React.
With all of that said, if you need a "think-inside-the-box" tool for a large, decentralized dev team, angular can win out- there are fewer places to look for documentation, which will be nice when angulars documentation improves.
I actually find that React better encourages smaller, cleaner components with fewer responsibilities, but that's also likely due to being very familiar with the redux paradigm.
Finally, if you want very flexible components, react wins hands down, because components can be used as properties to other components; dynamically rendering components in angular has always had an inversion of control issue.
That's been my experience; ymmv.
It was released 5 months ago.
Vue has HTML templates like Angular and virtual DOM like React. It is faster than both of them. It has a smaller file size than both of them. It has a clever single file component concept that makes developing components much easier. It uses a one-way data flow concept like React+Flux. Vue even has it's own competitor to redux/mobX called Vuex, and what makes it easier is that Vue is cognizant of Vuex's existence. There are really solid dev tools for Chrome as well (Vue and Vuex are aware of the dev tools as well).
I run a dev meetup, and I had planned to give a talk there on Angular 2. I even gave talks on JS tooling a year ago and TS last summer in preparation. Instead, I gave a talk on Vue this month, and people loved it. Here are the slides if you want to check it out (there are even embedded Vue apps!): https://azurelogic.github.io/vue-js-2.x-talk/#/
Other than that, this looks awesome. Time to develop a todo app.
To not have HTML templates means you need to do something more invasive to retrofit client-side templating into place. It's personally why I don't bother with libraries that don't offer similar, because I don't always have total control over what I am working on and I still need to get work done.
I don't care about templates being "bad" a as long as it works for us. I'm sold.
I love Vue.js too, but just for small projects or when I need to add some complex functionality to an existing site that is not SPA.
I guess it comes down with the saying "the right tool for the job".
That's just FUD, there is nothing in Angular that makes it more oriented toward Enterprise than Vue.js, unless you consider bloat an necessary component of any enterprise oriented solution, which is obviously a lie. What will decide which framework is "enterprise" is the ecosystem, the amount of widgets, not the bloat.
> I guess it comes down with the saying "the right tool for the job".
Exactly, the right tool for the job, AKA using a library that does only what it should do instead of trying to be anything and everything because its creators think the complex it looks, the more enterprisey it sounds. They will learn the hard way, and so will you.
to each their own, of course.
I probably won't ever use Angular unless I find myself desperate for work and can't find anything else. The problem I see inherent in frameworks is that they are all dogmatic about their opinions, and thus criticism of frameworks often do boil down to "I don't agree with their opinion", sometimes with rationalizations mixed in.
Preferences aside, Angular is objectively one of, if not the most, heaviest frameworks for web front-ends. It is not just a matter of bandwidth to the end user, but also a lot of magic under the hood that developers have to deal with. Consider the Java mindset that may have inspired Angular, people don't want to deal with that level of verbosity and enterprise mentality.
Unfortunately, there are increasingly few employment options if you want to use anything other than React or Angular. So rather than framing this argument in terms of framework hate, consider it a problem that lots of developers are forced to use these frameworks in order to be more like easily replaceable cogs in a machine, or be unemployed.
The react apps I've worked on have been much more successful; we haven't had to throw the whole thing away (unlike one of those angular ones...)
I'm sure other people have had other experiences, but after two terrible experiences, the questions I would ask are:
- Why would I bother looking at angular again?
- What has significantly changed in the last year to reduce the complexity, increase the component ecosystem or increase the quality and quantity of the documentation?
If you can't answer either of those with meaningful answers, I don't see any reason, given the other alternatives to angular that are around, to try using it again.
Disclaimer: It's a commercial product and I'm the lead developer.
SomeClass.SomeDep = MockDep;
In other words, inject through static properties. I do this with normal classes to test models and the like with no issues. No DI container necessary.For me, the real problems in web app development are
1. State management
2. Side effects
3. View layer performance
Angular pales by comparison to things like React+Redux which were born out of necessity, and as such, tackle those issues with laser like focus.
Angular doesn't feel like it was born out of necessity, but out of some desire to just build a framework. As such, it's complicated and magical feels clumsy by comparison.
When combined with things like Immutable, Sagas, and ReSelect, the Redux/React style of architecture (feel free to swap out Redux or React for whatever you prefer) is so much more practical and useful compared to Angular.
I don't know what it is that makes Angular popular with back end developers, but they seem to be Angular's biggest supporters. I consider my self full stack, but front end first, and I've noticed that people like me tend to favour libraries over frameworks. There's obviously something that is informing each groups opinions on this matter, but I don't know what it is.
You can use all that with angular 2. I am.
Redux -> @ngrx/store
Immutable -> same
Sagas -> @ngrx/effects
ReSelect -> same
Example here: https://github.com/ngrx/example-app
There's something about it -- feels clean and minimal, works really well with my ruby- and rails- influenced mind, organizes my thinking about an app and makes it easy to have things in their right places, at a correct level of abstraction, effortlessly.
My reaction after encountering vuejs was one of relief -- finally seeing an option I resonate with, a vision driven by someone whose thinking is aligned with my desire to avoid confusion, complexity and frustration.
The free screencasts at laracasts and egghead.io are quick and fantastic.
Ng2 felt too different. Ng1 to Ng2 made me look outside and there was React gaining ground - perfect timing. In its original state React is so much simpler than Angular. But then React with just the basics can make you create bad code - that's what happened to me. React with best practices - is hard to digest.
So I went back to Ng2 - soon enough I was craving to go back to React. Suddenly I started hating Angular2 (but loved TypeScript).
I spent time learning React best practices - that require some patience. But one thing I brought on from Ng2 was TypeScript. TS makes you a lot more productive. Now React and TS is not a widely accepted combination - but its very productive as your app grows.
1.X felt messy, but writing web apps in Angular > 2 feels really clean when done right.
The most funny thing probably is the typescript sale pitch (I use and like typescript) where you actually don't beneficiate from typescript at all with half of angular (string templates means no type checking or intelliSense on component names, model properties, component apis, etc)
It's also pretty fat and not exactly performant. It's simply a no-no on mobile. Its niche use case seems to be backend developers who know OO well, FP not so much, developing low/average quality back-office apps quickly without having to care about what's going on behind the scene.
The angular core devs always favor magic and shortcuts over simplicity. Its API surface is enormous, so have fun keeping up with the versions. It's optimized to get started quickly and be decently productive as long as you only use the core directives.
It's not terrible, but it's just not good if you care about the UX and maintainability of your app.
On first note, the codegen size decreased dramatically for AOT compiled builds - we went from ~600 KB vendor + app minified and gzipped (not counting 50 KB of polyfills) to ~400 KB. This is huge, and the boot speed feels even faster on first user load of the page!
Thanks to the Angular team for this fantastic work!
Angular CLI stabilization is a much more important news, actually. One of mistakes of Angular team - Angular CLI had to be ready before Angular itself.
With angular-cli ng2 is now usable and in my opinion the best Javacript/typescript framework.
Main change, as noted, is the new View Engine. The design doc[0] is worth a read if you're interested in front-end at all.
Happy to answer any questions!
[0] https://docs.google.com/document/d/195L4WaDSoI_kkW094LlShH6g...
We (and our colleagues at Google working on the web in general) find that the largest impact on performance comes from simply shipping less code.
Edit: correction: turns out our tests show we didn't take a perf hit on updates at all, and in fact ever-so-slightly improved. So win win :D
2) Why do we need Angular Material 2, when Google's official Material Components Web project is meant to be used with all kinds of frameworks and even has framework integration examples with Angular2: https://github.com/material-components/material-components-w...
3) Should I follow Quickstart or CLI Quickstart in the docs to get started? I have heard that the CLI is recommended nowadays, but the Angular 4.0 release blog says the CLI isn't even stable.
So really, it's brand new, and we're excited to see what the community does with it.
Philosophically, pre-rendering every SPA server side isn't a silver bullet. For a ton of cases it makes a lot of sense, but we want to avoid the impression that we're positioning SSR as a replacement for making your app fast.
2) The expectation of the Material Components Web project is that everything be "wrapped" for the specific framework. Angular Material is native Angular, and we have a team dedicated to that. Polymer has a material suite as well, and most of those components can work in Angular apps too. Components for everyone!
2a) you're asking a Googler that question. We have like, 11 messaging apps. I don't know what to tell you.
3) CLI went stable today, with its 1.0 release. We'll be moving the docs over to use the CLI everywhere soon - personally, i'd use the CLI to generate a new project and then follow along the tutorials.
Who thought it was a good idea to make Angular 2 incompatible with Angular 1?
You had it, and you blew it. Most people aren't going to use any version of Angular, now, and have switched to React and Vue.
This is so much discussed that I am not going to answer that. Google it.
But according to the latest StackOverflow survey [1] Angular is still bigger than you think: AngularJS 44.3%, React 19.5%
[0] https://discuss.emberjs.com/t/why-is-ember-3x-5x-slower-on-a...
[1]https://eviltrout.com/2016/02/25/fixing-android-performance....
So my answer to the question was something like: "You can find a lot of info by Googling it".
But I am not able to change my comment anymore.
We have a huge Angular 1.x app, but after hiring some new developers for our team we found the pool of React devs was huge compared to Angular devs. So much developer goodwill and mindshare has been lost.
After carefully evaluating the technical aspects of Angular and React and externalities like the above, we decided to start building new software with React.
Angular won't go away overnight, it will see a very steady and slow attrition, with developers themselves leading the way.
But I was responding to "You had it, and you blew it. Most people aren't going to use any version of Angular, now, and have switched to React and Vue."
When you look at the stats and look at other places online there are still very much people liking and using Angular. So it's not going away soon.
Also take a look at Google trends: https://trends.google.com/trends/explore?q=angular,react Both Angular and React are growing at an equal pace.
So the claim that developing new versions of Angular is a waste of time is nonsense.
https://trends.google.com/trends/explore?q=%2Fm%2F0j45p7w,%2...
Angular is actually better off with the break as new graduates may use it to replace vue as the new fad once vue has replaced react.
I talked to many devs who didn't accept a job because it was Angular instead of React.
Even though there are some things common but the differences are just too many. It would have been better if it was just release under a different banner altogether.
I understand the frustration of someone who has used AngularJS 1.x. There is not really a straightforward and low risk path to upgrading a production app.
But that is like saying there is not really a straightforward risk to switching from AngularJS 1.x to React. They're different frameworks. AngularJS is different from Angular.
In my opinion the Angular team has created something really special with this new framework. I think it falls into a category of its own, very difficult to compare it to something like Vue.
I wonder if, strategically, it would have been a better idea to give it a new name rather than a subsequent version number?
Yes. Retaining the Angular name is just a way to slightly disguise that they've dropped a framework altogether and left its user high and dry.
Give it another name, then.
You can't get people to adopt your framework, stop developing it leaving millions of projects in shit, and then expect people to do it all over again.
I'm glad that Google paid this strategic error dearly, having a huge percentage of people switching to React. Perhaps next time they'll think about it more deeply.
Am I being dense? Shouldn't that be everyone reading this thread?
Agreed. I just can't stand Angular's bloat, especially its IoC container. If I want to use one, then let me choose the one I want. A UI framework shouldn't come with it's own container it makes no sense. If this UI framework is too complicated to boostrap manually then it's too complicated at first place.
To make things clear I actually liked Angular 1 since it allows people to easily upgrade from jQuery and raw DOM.
I don't think Angular is just a UI framework though.
To me that sounds like choosing a tool based on the experience it gives the developer rather than the experience it gives the user. That's entirely the wrong way to pick what to build an app with. User experience is far more important.
(That's not a comment about Angular or Vue. They're both great, and you should use whichever is best for the web app you're writing.)
I agree that "beautiful" is not a very precise or important metric but easy to read and update is important. That said I think React is really good.
i don't know that this is strictly true, nor that these notions are mutually exclusive.
I've messed around with Quasar Framework[0], which lets you build mobile apps in Vue (Electron too). Seems like its inspired by Ionic. Still in dev, but I liked what I saw.
I'm sure the Angular team are great people, and they're clearly talented devs... but stay away from Angular.
It doesn't help with the problems you will actually face. Typed Javascript is a cargo cult. Angular just plain confusing for no apparent benefit. Dependency injection is bizarre. The distinction between modules, components, and directive is unnecessary. The Javascript community in general is moving away from OOP towards functional programming, but Angular has hitched it's wagon to OOP. It's reliance on the decorator pattern is maddening. It's view layer performance is sub standard. It's opinionated in all the wrong ways.
And I say this as someone with a lot of experience with Angular 1, Angular 2.
Trust me, go for libraries over frameworks every time. Redux, React, Immutable, Sagas, and reSelect. That's the future of web app development.
In React it is a breeze to make Higher Order Components to connect to a store and it also makes it much easier to separate those smart components from small reusable presentation components.
I have seen people shy away from making smaller components just because Angular makes it so damned painful to make components. It is just easier to stuff everything in a template and copy paste everything around, which leads to a serious case of spaghetti code. I am happy for you if you don't have to work with something like that. I do, and I can tell you it is not nice in any way.
Then, I read that VueJS was a somewhat better and lean version of React, so I skipped React and started with Vue, I was surprised that I wrote the complete app within a week of starting to learn Vue (https://github.com/thewhitetulip/Tasks-vue) , of course, there were issues I faced, but they were solved quickly thanks to the amazing vue community.
I saw that many many people who are trying Vue are facing the same problems as I was, thus, I started writing this guide (https://github.com/thewhitetulip/intro-to-vuejs/).
Vue is amazing.
edit: link
Edit: removed a brash statement.
I am hardly an expert on either Angular/Vue to recommend them based on their internals, I stated my experience, of course, the final decision depends on those who choose one framework over another.
Some tools are harder than others, sometimes because they accomplish more.
Imagine if you'd said "one day into learning about homeopathy, I was able to prescribe homeopathy-things, but after 4-5 weeks of med school I was still taking classes about blood cells."
I'm not actually defending Angular as such, because I am super ignorant about it. Perhaps Angular is a byzantine mess. But there are many great tools which do not have smooth onboarding procedures, which are still valuable because of how they work on complicated projects.
Of course, the BEST tools make easy things easy and hard things possible. Angular might (or might not) make hard things possible, but I think everyone agrees it's not particularly good at making easy things easy.
I get your point, I removed the last statement, it was incorrect. the thing is, I wanted to state that Vue is super easy to use, now, if it is a toy or a serious framework is upto the programmer to decide :-)
How easy it is to get up and running with a framework doesn't actually tell me that much about the framework. Is the apparent simplicity simply an artefact of a huge layer of magic that I will end up fighting 4 months down the row?
A good example for this is actually the much maligned Angular 1, two-way data binding looks easy on the surface, but it comes with a cost. And guess what, two-way data binding was all the rage for a while in the HN echo chamber during the early days of Ember, Angular and Knockout.
In the end, whether you use Angular, React or Vue is really secondary to what you build with it. You can create shitty and good code with all of them.
Now, specifically about Angular2+. People act as if its approach was this awful, monstrous abomination. This all really depends on your circumstance tho, or not? There are instances where it makes perfect sense to tailor your setup and use a libraries-first approach. But if you do this, let's say in React, you need to make a lot of decisions up front. Do you want manage state? How? Redux? MobX? What about message buses? Do you want to use Flow? Just ES6 / Babel? TypeScript? What about routing? Lazy-loading? What about bundling? Webpack? Rollup? And so on.
Now, if you are part of a heterogenous developer team working in an enterprise shop, maybe you are happy to know that there is a framework that has made a lot of decisions already for you and prevents you from having to discuss the initial setup for 2 months, but at the same time is flexible enough to be adapted to your needs (I mean, this even applies to experienced front-end shops, there's nothing more horrible than endless discussions about shit like pure ES6 vs Flow vs TypeScript from senior devs). On top of that it uses patterns that you already know, such as dependency injection and annotations. While you personally might not feel at ease with this, many developers do.
> In the end, whether you use Angular, React or Vue is really secondary to what you build with it.
yes and no, you are also making a tradeoff at the learning curve of the chosen framework.
1. The documentation is excellent. It's short enough to read in one sitting and comprehensive in that every option is documented without needing to resort to third party websites. When a new feature is added even in a minor version upgrade, that new feature is in the documentation (and marked as NEW). The search is also great and separates results into "Guide" and "API" categories.
2. Vue itself is extremely cohesive and user friendly. User friendly can mean many things. One of those is simply terminology. For example, in both Angular and Vue, templates can have child content. AngularJS and Angular use the terms Transclusion and Content Projection while Vue templates can have "slots": a term which doesn't require a CS degree to understand the intent.
The Angular documentation is simply not good: the organization, navigation, search, and writing style are vastly inferior to Vue's docs. Many sections are written in tutorial form repeating the same information (or mentioning important information in an unrelated section). It's hard to find what you're looking for and in many cases things simply aren't documented. For instance, speaking of Content Projection, it's a major feature and it's nearly impossible to find in the docs unless you already know ahead of time that it's called "Content Projection". I had to learn about it from a third party blog which made me question if it was even safe to use. There's even an open JIRA item noting this:
https://github.com/angular/angular.io/issues/3099
Other things that bit me recently were key modifiers in which the possible options are only mentioned on the github issue page (not in the docs).
Those frameworks/libraries don't write themselves.
This is really aggravated that -- as opposed to native GUI libraries -- frontend requirements vary wildly. You might just need it to embellish some elements (i.e. the jquery level), you might also use it to build some large desktop app replacement.
Which is why I take most comparisons with a large grain of salt. In this regard, "JS framework XYZ sucks/rules" is the new "PHP is great/awful".
Which often has the same end result, with a bit of added customization and some hard choices way too early.
However, to me it's not really that Angular is bad in itself, it's more that the alternatives (React/Inferno/Preact combined with redux or MobX) are just superior in so many ways, and by a huge margin.
Once you've done React with TS/TSX, with type checked components all the way, great code completion, incredible performance...it's hard to go back.
Angular's components would be ok if React didn't allow you to declare functional components in just a few lines of code, create HOC to decorate exiting components, etc. Angular's components are certainly better than Angular 1's but when you compare it with what you can do with React it just can't compete.
Honestly, from my experience, there is not a single thing that Angular does better than React and friends. Not a single one. It does things better than Angular 1/Ember/Backbone but that's it.
I think this is a bit like the solar/renewables revolution that is happening in energy. There are more efficient combustion engines, filters and whatnot, but when you compare them with the other paradigm, it falls short.
My company uprooted a few months of React development because Angular (2) comes with batteries included and we wouldn't have to rely on third-party stuff to fill in the gaps. The amount of stuff you get is... not actually that much, but it's enough to sell it. Of course, our new package.json is just as long, if not longer using Angular than it was before, and I've spent arguably more time doing setup (before @angular/cli stabilised) than I ever did with React. The whole @angular/router situation with module loading is silly, who wants to load modules via strings? Yes, the default batteries-included parts work with each other very well for the basics, but what about power and flexibility?
React could go a long way in this regard just by having a few more official ways of doing things and offering a few tools straight up (a @react/router for instance) while still selling the just-part-of-a-wonderful-ecosystem thing. React is so much better at satisfying real development needs, like the hyper-extensibility via functional composition and the super-DRY code you can get out of it very quickly, that proving its worth in ways that are only superficially important would be well worth it.
No more factories, or dependency injection, or crazy template language that is never quite expressive enough, and no more digest cycles to optimize.
The benefit over react is how you don't need anything additional to manage your workflow. It's nice to set up a project and not need to glue together libraries.
ANY web developer is someone that once upon a time looked at an api that was a complete mess (javascript, dom, ...) and still said to himself - that's for me!
Update : absolutely not saying they wrong to think so. Building the right things is more important than building the things right.
React is 4 years old.
Vue is 3 years old.
I will never go back to using a framework with an approach like Angular. Trying to abstract away the browser environment and have developers learn a whole new set of APIs with nearly the same level of complexity is just a fundamentally bad idea.
JSX doesn't do any abstraction. Unless you're using React Native, you're writing HTML, just that JSX turns it into `React.createElement(...)` calls.
The VDOM is kind of an abstraction, as React Native can use the same reconciler as React, but the React (web) VDOM is just a tree of HTML DOM nodes that gets diffed against the component rerender output and the changes are applied to the DOM.
He doesn't have it backwards.
He means they're "opaque" abstractions, in the sense that they're the opposite of a "Leaky Abstraction"[0]. A leaky abstraction is one wherein the abstractions below it "leak" up and you have to keep multiple abstractions in your head at once. This happens more with Angular than React.
I see what you mean by calling it a transparent abstraction though, since React's abstractions get out of your way and let you directly think about the lower level. This doesn't really fit with the Leaky abstraction analogy though, but it's a great point.
[0] https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
I really like the idea of Typscript, but now... now I guess back to the drawing board on what to learn.
Then 3 minutes into a Angular 2/Typescript lesson I read that. But point taken.
I think I will stick with Angular and Typescript purely on the basis that it seems to have better integration with .Net core etc. I say all of this from a huge point of ignorance and just what I could gather from an hour or so of research online.
Edit: Changed to single toe.
You will still be able to use redux/whatever with it.
The reality is you don't really have any idea of what future of web development is, as anyone has. The community is not oriented in any way... rather we are probably in the time of biggest uncertainty and most frequent change of ideas of the whole web dev history.
Honestly the only and best suggestion I can make is "ignore everyone who try to say * this is how you should do things, the rest is shit * ", for the big part of the time they are just trying to self-justify an over investment on their own solution (or worst, ego), telling themselves they for sure had understood everything and the others are just wrong or "not there yet". They don't even know that they don't know.
Now that doesn't make js revisitation of fp pristine but still it's quite a refreshing thing.
I never used Ang2+ but Ang1 was such a heavy thing; it was a OOP theory in itself, flipped around the DOM (I forgot their terminology but basically, the DOM tree became the inheritance tree).
The angular team seems to hate simplicity and love made up words.
Personally I'm one of the apparently rare breeds that hate angular but loves typescript. I wish there were more of us.
They're really in different realms and please don't make them part of the same whole. Typescript is a transpiler but the transforms it does are designed to mimic accepted JavaScript idioms.
When I'm debugging typescript it makes sense, it looks almost like JavaScript written by somebody that knows what they're doing.
Contrast that to Babel, Closure compiler, and countless others that produce "JavaScript" that reads more like assembler.
Typescript is easy to make back into human readable JS and it's equally easy to slowly transform your JavaScript into typescript.
It's the most forward and backward compatible language transformer I've ran across so I don't appreciate you shitting on it :)
Plus you can do some cool things like Component inheritance.
I've never tried Flow, but I guess it's practically the same.
Looking at both A1 and A2 has confused me, so might just try React and see if that is more compatible with my ageing me. :) Nevertheless, I also really like the looks of Typescript. Could your possibly recommend a(n opinionated) way to get started with the two?
Of course the whole web stack is a new thing. Angular makes web app development much more productive.
React is a lot less abstraction and feels more natural to people that started out making UI with plain HTML.
Each has its merits but Angular uses way too much magic for my taste to make the web seem like something it's not. Much like a client side re-imagination of webforms
We're in the phase of the hype loop where everyone assumes language designers from 15 years ago are idiots. In another few years everyone will be talking about the revival of OOP
That said, if someone thinks language designers from the past are idiots, then they also shouldn't like functional programming, as it's at least as old.
you seem a bit committed. is this an emotional thing?
> there's a good reason most...
is there? is this reason related to languages themselves or their use? does it necessarily imply anything specific about "functional style"?
This is a HUGE red flag if you're seeking employment long-term in the tech sector.
Anders Hejlsberg has done a brilliant thing.
I'm also always a bit sad that Knockout seems to be overlooked a lot. It is not as opinionated but often times exactly the right tool for the job.
Frankly, I don't know if I can say the same about all the other libraries/frameworks/etc since every month there is something new that's supposed to make all the other competing tools part of ancient history.
There's literally no reason to not use typescript
TypeScript is an invaluable, mature technology that provides large productivity boosts to any team that maintains a mid-sized code base.
It plays extremely well with React too, and it's benefits are independent of the tech stack. If you are used to typed components/templates, you will NEVER want to go back.
I would argue that is more important to have static typing in the front-end compared to the back-end in a web-application context. There is more state, lot's of shared entities and unit tests are expensive to write and maintain.
Good point, but only to an extent: Unit tests boilerplate in dynamic languages that is redundant with static typing is only a (minor) subset of unit tests that you should be writing for your code. Static typing is not an excuse to skip unit tests altogether. I've unfortunately met people claiming exactly that...
I retried using Typescript 1 month ago. Compiling took 6-7 seconds for about 8 files. I could not find a solution and gave up using TS. I hope that's just me doing not good enough research.
(And I happen to agree with him on angular being confusing and not well designed)
What I like most with React over Angular is that it seems like it cuts to the core of the problem I'm actually trying to solve here. It just feels like a lean, clean, proper solution to the main issue at hand. (this of course helps with dev adoption too because it's easier to find people knowledgeable in lean frameworks, or at worst much quicker to train them)
I've been using TypeScript with React now for about six months - prior to that I was working on a large React/Redux app written in ES6 using Babel.
In my experience, I have seen a significant increase in my productivity after embracing TypeScript. With the static type support I am fixing/avoiding more errors at 'authoring' time due to intellisense and the VSCode editor flagging what will be compile errors. I am able to refactor across files with a lot less fear.
The advanced types in TS (specifically discriminated unions) make Redux actions and reducer code a lot more maintainable.
Overall I'm very pleased with the transition to TS. I spent time learning Elm last year and simply fell in love with that development experience. For reasons out of my control I cannot use it in production but with my current TS+React approach I can at least get close to what Elm offers.
Javascript is more of a 'Prototype' based language. They call things 'Object's but I've seen few portions of JS code that actually use OOP in the traditional sense (encapsulation, polymorphism, etc)[0]. Mostly objects are just used for namespaces for finding vars and functions.
Agreed on the frameworks versus libs.
I would recommend that you work on a large codebase in a statically-typed language for a spell. Duck-typing is great for a shell script or blog post but things may be different when refactoring 100k lines of code, finding references, etc.
[0] Yes I know about the JS 'library' 'pattern'. That's more gymnastics than encapsulation.
You probably mean "inheritance", which is a way to achieve polymorphism, not a synonym for it.
https://en.wikipedia.org/wiki/Polymorphism_(computer_science...
The general idea is that you can have one expression dispatch to many different concrete implementations depending on the context. Virtual function calls is one approach, but C uses function pointers, C++ uses templates, dynamic languages use duck typing, several languages use message passing, and so on.
1. Angular 2 is not object oriented in the standard meaning of the term: it does not rely on inheritance or polymorphism that much.
But it does rely on classes as the backing structure of your UI components. In other words, they tried to create a platform for creating widgets that compose. And more or less succeeded.
This is a tried and true pattern that has been used to create complex user interfaces since forever. I would wait a while before claiming that this stile is obsolete.
2. Angular 2 is quite functional.
Decorators in Javascript are just higher order functions (like python I guess). They look like like Java's annotations, but work in a completely different way.
They made streams (RxJs) the standard way of working with data.
And pipes are also a functional construct.
3. There are some good things to say about their routing module too, but I have to go.
Anyway, my opinion is that Angular and React address different needs and there is definitely room for both of them.
Golden cage then eh?
Nah, I'd rather go with polymer instead which is much closer to DOM and is a small library indeed (It's not like redux is working only for react).
And without polyfills I'm looking into 15kb download for users, instead of react + reactDOM behmoth.
I can't wait for someone to add JSX+VDom support for polymer (for the folks who like that approach).
It comes down to this: What is the relationship between your code and the 3rd party code? Are you calling it, or is it calling you?
If most of the code you write is extending some 3rd party code, e.g. React.Component, and most of the time your code is being executed by the 3rd party code, e.g. as render() calls, then what you have is a framework.
React and its myriad extensions may be as great as people are saying, but this insistence that it is a "library" only serves to make the community look delusional.
I am rewriting a React/Redux app I wrote to Angular 2. It's more readable, the control flow is easier to understand, and it's better to work on as a team. Instead of reducers and action creators, I have services separated into their own files. It's much easier for me to manage the work of others on the team.
F# has Fable that compiles down to Javascript, OCaml has BuckleScript, and the new kid on the block, ReasonML. I've read about one or more production websites running in these what we'd call esoteric choices. (Add Elm and PureScript to the mix)
There is increasing adoption in the web for both Typed FP through these languages and Untyped FP through ClojureScript. Non-FP communities on the other hand don't seem too keen on the web. Ruby for example has Opal, but with the pace at which Javascript is getting better, porting similar languages just for their familiarity doesn't seem to generate the same kind of excitement as transpiling from a more powerful one.
And once Web Assembly becomes viable and browsers are free from Javascript (except for being the lowest common mass adoption denominator), we'll be able to choose our languages just like we can when programming for any other environment. It'll be a Wild West out there, but in a nice kind of way.
Angular 1 to Angular 2 made me drop angular entirely, that happened less than 6 months ago I believe.
Just reading Angular 4 gives me the creeps.
Is 4 widely different from 2? How am I suppose to know if you using semver and already have a really bad history?
http://angularjs.blogspot.com/2016/10/versioning-and-releasi...
With all people complaining about Java, we don't have to deal with this shit so often.
Most breaking changes I see on the JavaScript ecosystem seem like mostly cosmetic. It has been a rough road trying to make decisions on tech that won't get stale quickly and have support dropped in a 1-2 year frame.
Angular is really one of the worst offenders in this regard. What was so fundamentally broken with Angular v1's api that could not just be worked internally and incremented?
It also has ramifications which are pretty dire in my opinion. We have an app written with Ionic 1, so I go check out Ionic 2 see what's going on, and oh look such shiny things, how do we migrate? Nope, full rewrite of course.
There are some decision makers in these teams which are completely disregarding the fact they are burning through several work hours of people around the globe without real value.
Stop breaking things because new. Fine, use semver, but don't you change that first digit lightly, it hurts when you do.
But man, am I getting jaded about all this javascript framework stuff. Every 6 months stuff breaks, every 2 years there's a huge shift.
The problem with javascript I've been facing is value. Time and effort doesn't always correlate to what I get in the other end. In fact, I can say when building, going single-page is a time sink.
And it's almost always a mistake to go SPA first. Using a django or a rails lets you get the basics and data flow nailed down early on. Get into a framework too early and have a need to change something? Have fun explaining to your manager/client how costly it is to do a "simple" modification to a JS app when you have to throw the state you built it upon out the door.
What I want is a system tightly coupled into a server-side framework like a Django or a Rails that degrades gracefully and I only have to program the interactivity one time. Something that'd plop right into the asset pipeline/django compressor so I don't have to go outside of the framework to build.
Hundreds of hours of my life have been spent chasing this dream of sharing server side code with client side JS frameworks. That's what I need.
Meteor didn't do it for me. As for rendr, I've done stuff better with backbone/express in-house. As of 2017, I get my best bang for the buck using django and pjax. No joking, I went from full DRF + Backbone Marionette -> to plain old jquery and pjax and couldn't be happier.
All these new build tools (grunt, gulp, webpack... come on), ES versions (I was ok with ES5). None of these things are helping me ship stuff ahead of / on time and correctly. They're creating an even larger gap between the server side data, logic and templates and the JS interactivity.
If anyone is listening, I'd love to have a well-supported opinionated distribution of django or rails that just renders forms, tables, etc. with angular/react/etc. and degrades gracefully.
So why is Rx and Typescript so important to me? Well specifically those two are kind of like the drug that once you try them, you literally can't go back. I've been wanting this level of type checking for 10 years on the front end. I am not willing to lose it now. As for Rx, it's the one true way to do async flows. Promises and Callbacks just end up creating large pyramidic code.
At this point it's hard to ignore that all the UI libraries are just paradigms and patterns, and how we use them is getting less important. These days I just want to write Component-style UI code, and I'll be fine.
Similarl things can be said about RxJS, but I think since it's a different level of abstraction, it will hit much harder, once it gains more traction. And it's already building up a solid community much faster than before. the only thing standing in the way of people learning RxJS is the same as Angular / Vue / React. It's scary and there's a lot of fatigue still. I hope that this year is thus going to be even better for teaching. ^^
Tldr; RxJS is going to be huge, if we can teach it more and JS fatigue calms down.
this.property$ = some_observable();
this.property$.subscribe(fn);
... will auto-unsubscribe (does it? who knows... try it?), what happens when you async pipe and its interaction with ChangeDetection...Still works, incidentally.
What _is_ interesting, though, is having your virtual DOM be the output of a reactive stream, and having a virtual DOM library use that to update the actual DOM. This is the approach Cycle.js takes: https://cycle.js.org/
ever looked into clojurescript?
I found building sites this way refreshing.
We are not quite at the point of using NodeJs on the backend normally (and honestly the JVM is 100x better) but you can share the language.
You want get a django or rails like app at the moment.
What's going on with versions?
So to keep all of them at the same major version, they pushed everything to version 4.
Also, the jump from AngularJS (1) to Angular 2 was drastically different. Going from 2 to 4 however is much less significant in terms of breaking changes.
You won't have to relearn hardly anything if you already know 2.
Angular 2+ is now simply Angular. All new releases follow a naming of version X.Y.Z where X indicates breaking changes, Y non-breaking new features, and Z is bug fixes.
Version 3 is being skipped over due to poor naming of the related Angular Router lib.
http://angularjs.blogspot.com/2016/12/ok-let-me-explain-its-...
A major version bump for a module could signal a breaking change, or it could just be due to the packages it's locked to having had a breaking change
This is why keeping your dependency list as tiny as possible is imperative.
Should that be a new major version of the library?
The more nuanced answer is that it depends on your packaging system and your language runtime. If either cannot handle more than one minor version of a dependency at the same time, you need to bump a major version. The problem is that the code that uses your library might also indirectly be using that dependency, but pinned to a different major version. This means that the application is broken even though the breaking changes aren't used by your library.
To illustrate:
apple-1.0 => banana-1.0 => carrot-1.0
=> broccoli-1.0 => carrot-1.0
Say, as the maintainer of banana-1.0 want bug fixes in carrot-2.0, so you pull it in and bump your minor version. And then an application updates it dependencies. apple-1.1 => banana-1.1 => carrot-2.0
=> broccoli-1.3 => carrot-1.1
In some, though not many, systems, you can pull in two versions as if they were different libraries. But in almost all, you get a dependency conflict and apple will be broken.Even if you can juggle two dependencies of the same library, you need to make sure there wouldn't be any logic changes that would break the system or even corrupt data (!).
Anyway, it's simpler to be conservative and bump the major version. Yes, that can be a pain. But, again, it's good to keep your dependency list small or at least very boring to keep that pain to a minimum.
The spec only specifies one of those directions, you're free to bump the major version for any change if you feel like it. Doing so would make your versioning scheme much less useful, but it's not actually breaking the semver rules.
in 2017 I'm curious why I'd pick angular over vue for a web-based project, if anyone has insight. not over "x js framework" -- over vue specifically. vue 2 is pretty much exactly what I wanted angular 2 to be.
I'll say personally I've never been a fan of Angular, but I think if you want Java/J2EE-ish all-encompassing component model and decorator-/annotation-based GUIs, it certainly is a very strong contender (though kindof the thermonuclear option and absurdly complex IMHO, at least if you have some prior web development experience). I think Google's track record wrt. long-term maintainance isn't half bad really (GWT and closure tools have been around for a long time).
That said, I've recently talked to recruiters, and was told Angular has already peaked as the go-to framework for enterprise MVC web apps, and is replaced by React and others (and I'm assuming Angular wasn't all that much used outside that demographic because of the heavy setup and on boarding/buy-in).
In the course of JavaScript generational cycles I'm expecting we're bound to re-discover "evergreen" web apps, those being characterized by lack of heavy build pipelines, simple browser-refresh driven development cycles, and straightforward use of web forms (+ maybe components).
An open question for me is what about TypeScript, eg. since Angular has been a major driver/user behind its type-heavy approach, will it suffer along with Angular?
Remember when the server generated HTML? You could middle click a link!
I'll even use normal browser history, instead of re-implementing it in Javascript for my app (with bugs).
Angular provides consistent structure to your app. With angular-cli, consistent interface to front-end development. Having ported it from Ember, IMO the cli interface should be standard across all front-end frameworks.
I see it as microkernel like framework for front-end development. In Java land, we have OSGi standard for modular software component development, angular has sort-of similar design.
The only confusing part is NgModule, the team should rename angular modules as NgBundle - which consists of native TS modules.
I read somewhere, angular team is working on material widget library, please make style-less components with theming support.
JS frameworks these days are such job creators. Which is great for consulting, but I don't want such mutability for my own products.
One thing - name of the framework should have been something different. At first we thought it is going to be called Angular2 and later it became just Angular. You can imagine that whole community will have to rename their libraries and etc.
In overall, big thank you from our frontend team for giving us a great framework
it is old school JEE, which is ironic as JEE,Spring and all that bullshit are trying to move far away from what they used to be. All that complexity has a cost.
Install the latest version of the CLI: npm install -g @angular/cli
And then run: ng new project-name --ng4
The "--ng4" flag is currently required, as it doesn't yet install ng4 by default.
Edit: it's released! npm install @angular/cli
I am seeing : platform-browser / platform-server namespace. Can we expect platform-android, platform-ios, platform-jvm ?
Looking at the angular compiler pipeline, with AST this should be possible ?
The last one, well, that's a bit more complicated. Let's just say that sort of thing is on the radar.
There was definitely some initial pushback, but we hope to demonstrate with this release that it's a) not that scary and b) good for both developers and users.
Most devs should see significant reduction (upwards of 50%) in their output builds. We think that's a reasonable trade off for a couple hours of work to upgrade.
In this release, most developers should be able to simply update their dependencies and rebuild. We're aiming for regular, planned, minimal changes, rather than Big Bang style change from AngularJS -> Angular.
We'll see how it shakes out, but so far our community has been pretty awesome about it.
We as engineers should not accept this. Business should not be involved in technical decisions like library upgrades. Business and engineering should negotiation development scheduling, nothing more. This means what new features are worked on, what bugs are prioritized, etc. All remaining time should be up to engineering's discretion.
And if business has you working on features full-time, then that's a (really) bad business and you should find a more acceptable company to work for.
Required: 3+ years experience building Angular 4 apps
My criteria to adopting a framework:
* Makes me more productive
* Allow me to ship apps / solutions better and faster
* Minimal time doing some head scratching on how to implement stuff
* Integration with other frameworks
* Uncomplicated setup and build process
* Community support (hey, we can't possibly know every inch of a framework unless we are the author)
Angular 1.x is AngularJs.
If you are trying to differentiate the two in google, add -AngularJS to the end of the search. Also pretty good bet you're going to want to search within the last year for up to date posts.
Versioning and Releasing Angular http://angularjs.blogspot.com/2016/12/ok-let-me-explain-its-...
How does Angular make my life easier or better in some way?
I currently use Python and Pyramid as a framework. Mako templates. And SQLAlchemy for database interactions.
How is any of this really better?
This SPA would typically talk to services via "AJAX" (though probably with JSON). These services could be implemented using any technology.
Of course. Because it isn’t. It’s not worse either. It’s different. It’s a completely different approach to creating web applications.
Everyone has different criteria to meet. Working without JavaScript usually isn’t one with modern web applications.
This has the added benefit of extremely small page sizes. Nothing gets loaded globally. Every page has only and exactly what it needs to function properly.
I'm just wondering if I am that much of a dinosaur and I need to invest the time into learning some of these frameworks to be competitive on the market in the future.
What I do works well. It's fast, it's scalable, and I'm very fast at developing with that toolchain. The code is clean, clear, well-organized, and modular. Anyone who knows Python, SQL(Alchemy), and JavaScript can pick it up and work with it.
I can work on any different part of an application without worrying about if it might break something elsewhere. I feel like the patterns I've gotten comfortable with are kind of a sweet spot between micro-services and monolithic. My apps are technically monoliths, but the various modules are clearly isolated.
I'm in my late 30s now, and I want to keep up and not turn into one of those old guys who refuses to stay current. I'm genuinely curious what the value proposition is, outside of learning a new paradigm for its own sake. There's always value in learning new ways to solve problems you already have a good handle on.
But outside of those things, is there some secret magic I'm missing out on?
Sorry angular team, it just mean you did poor job at first.
Looks like cool features, but I have a hard time envisioning on how they all work together.
I was suprised, so I made random check, and it was true as far as I can tell.
Plus for fun I randomly checked, also among the remaining sites: very few are «angular powered» on the whole domain. Making the claim these people use angular even less solid.
Please feel free to contribute to my script checking your claims if you feel I missed some true positive
https://gist.github.com/jul/7056d4535da42103407ba2424e47d507
after all no detection tools can claim to be 100% accurate.
Anyone choosing monolithic over microframeworks/libraries will regret it over time, that time may be as quick as 6 months, right around launch and switching to maintenance. Pour some out for the poor bastards that have to support legacy versions of these frameworks.
https://jobsquery.it/jobs;page=1;tags=AngularJs;sortBy=PUBLI...
Someone on hackernews said it would be the future!
We also support native (or emulated) Shadow DOM out of the box.
It gets a little more interesting when you start interleaving Angular and WebComponents, but one of the deprecations in 4.0 (regarding Angular's use of the <template> tag) is squarely aimed at making that easier in the future.
So when all the angular developers quit and new ones join they can semi-understand the code because it's written in "angular way".
https://gist.github.com/jul/7056d4535da42103407ba2424e47d507
So making the hypothesis of good faith from the submitter it means 50% of historic users of angular dropped it since 2015. Most of them anyway did not «fully» adopted it.
If a technology is being dropped after 2 years by their early motivated adopters, maybe there is a smell?