April 6, 20179 yr Over the last couple of weeks I've been getting my feet wet developing some full stack mean solutions to some ideas I've had floating around for a while. In the past I've exclusively approached problems with a typical LAMP stack solution. Personally, I wouldn't class myself as a designer or as a developer. I just sort of dabble in both, learning what interests me at any given time. Now, I realise at some point in the future I am going to have to make this distinction and focus primarily on one or the other if I want to pursue this in a professional capacity. With that in mind, does anyone have experience with the MEAN stack and the workflow that would exist between a team of designers/developers. Because it seems to me that it blurs the line between the professions significantly. Or would a full stack developer be its own niche entirely? With that said, I would have to say my experience with this so far has been pretty positive. And I would be interested to know what others think? I particularly like the MVC architecture that angular allows you to follow. In contrast, mongoDB is weird, but it's probably because I've never touched anything noSQL before this and can't throw off the relational data model. Or it could simply be that what I've trying would be better suited to a RDBMS, I don't know. I've heard as well, that one major problem AngularJS faces is poor SEO performance. I don't have a great understanding of the implications of good SEO so I wonder if anyone could clarify this? I'd also like to discuss the future of these technologies, does anyone think that the demand for mean technologies will increase, or is it more of just a fad? And in long run it would be better to focus on more established languages like Ruby and Rails? Or, am I constraining myself a bit by pushing everything into one stack or another? Should I instead by focusing on each framework and what it can do exclusively. Then approach each project with what works best in that scenario, for example AngularJS might be a good fit, but a mySQL database would serve better, so breakaway from an established stack and use each technology based on its own merit. Is this the right approach? I know I'm rambling a bit here, so apologies. It's just a compilation of some thoughts that have occurred to me recently.
April 6, 20179 yr Should I instead by focusing on each framework and what it can do exclusively. Then approach each project with what works best in that scenario, for example AngularJS might be a good fit, but a mySQL database would serve better, so breakaway from an established stack and use each technology based on its own merit. Is this the right approach? In short, yes. Certainly with any technology there are always tradeoffs. Mongo generally isn't good at relational data, but it excels at being a datastore that can be queried from the client and server. Something like MySQL is great at handling relational data, other times something like Firebase is the right solution, it all depends. In terms of Angular, I've never been a fan of it. I don't think MVC translates well to front end, it's generally difficult to keep your app state in sync. I think it's fine for backend though. Personally, I'm a massive fan of both React and Vue (with JSX). I recommend watching this to get an idea of the issues that surround current templating systems, and what frameworks like React are doing to side step these issues. It's worth noting that React isn't the only framework that has single file components and virtual DOM, a lot of frameworks do now.
April 6, 20179 yr In terms of Angular, I've never been a fan of it. I don't think MVC translates well to front end, it's generally difficult to keep your app state in sync. I think it's fine for backend though. Personally, I'm a massive fan of both React and Vue (with JSX). This, Although I'm not much of a fan of Vue either, it claims to take the best of both React and Angular, but IMO those bits of Angular it takes I don't like, especially the templating, although I know they have now added in JSX. But in terms of state management I much prefer Redux over Vuex which the latter causes mutations. React seems to be far more functional based, wheres Vue seems to appeal to those who have the OOP mindset. Also there's the issue that Vue is relatively new and essentially supported by a single person, who is doing an incredible job But for real projects it's safer to use something like React that has the backing of Facebook, it's massive ecosystem and many large tech companies that are consuming it. We use React heavily at Sainsbury's and it's also used at the BBC, Netflix, AirBnb etc… As for Angular I hope I never have to touch it again - that includes the updates that are still monolithic and highly opinionated. That aside I think Express is great and for your database use what best matches your application, that could be Mongo, or maybe Redis if you just need key-value persistance. If there's going to be a lot of relations perhaps a postgreSQL could be a better choice. It's worth noting that the DataBase and server - anything on the backend stack should not influence what front-end stack you roll with. Your backend should merely be an API for your frontend to communicate with. Another plus of React is that you can server render (possible with Vue too) so you won't run into any SEO issues and page load performance will be noticeably better for users who won't be presented with a blank screen while the JavaScript bundle downloads. My preferred stack would be (DB):Express:React/Redux. In terms of the future JavaScript is here to stay for at least the next decade, it's the most popular language in the world and still growing in popularity. The fact you can share the same code between the client and server reduces project costs significantly. React will also be around, it's sort-of becoming the defacto standard for frameworks although front-end is always subject to churn. It does seem though Facebook are heavily invested in it. Google were not really invested in Angular, they barely used it in their products, whereas Facebook uses React heavily in both it's own application and Instagram whom they bought out. Edited April 6, 20179 yr by rbrtsmith
April 6, 20179 yr This, Although I'm not much of a fan of Vue either, it claims to take the best of both React and Angular, but IMO those bits of Angular it takes I don't like, especially the templating, although I know they have now added in JSX. But in terms of state management I much prefer Redux over Vuex which the latter causes mutations. React seems to be far more functional based, wheres Vue seems to appeal to those who have the OOP mindset. Also there's the issue that Vue is relatively new and essentially supported by a single person, who is doing an incredible job But for real projects it's safer to use something like React that has the backing of Facebook, it's massive ecosystem and many large tech companies that are consuming it. We use React heavily at Sainsbury's and it's also used at the BBC, Netflix, AirBnb etc… Most of what you can do with React you can also do with Vue. This wasn't the case previously, 2.0 was a significant re-write. There's a Redux implementation called Revue and one for Mobx. The main difference if you don't use templates is the underlying implementation for DOM updates. Vue uses a reactivity model and is completely self aware of when it needs to update. I'm aware the same can be true for React, lifecycle hooks aren't a requirement. Another difference is that React is ideal if you have possible requirement to port the code over to a native app, and Vue doesn't offer this. I'm not too fussed about large companies using it, although Alibaba and Gitlab both use Vue in production. The code is all open source and there's a core team now behind it, even if it's mainly just one person being the face of it all. Where Vue really shines is that you can drop it on a page and be incredibly productive with it. You can do the same with React and React DOM, but the file size is massive. React is much more suited to having a build process behind it. Currently using React inside of a CMS is a real pain, it's much better to use an API and have a separate app, but that's not always feasible. Vue is used a lot in PHP apps and generally suits them better. I think it fundamentally comes down to what you're building and what the constraints of your technology are. React isn't always a good solution as much as it pains me to say it.
April 6, 20179 yr It seems like Vue may be a good option if you're using PHP CMS systems… As for filesize, React drops down considerably when you have the right environment variables setup (Production), it removes a whole load of development tools such as propTypes from the codebase. The resulting bundle size for React is then quite small (Around the 30k mark) which if you are server rendering too it's really just getting into the realms of premature optimisation and your load time performance bottlenecks will lie elsewhere. Then of course there's Preact and other stripped down alternatives if you really need to eek out some more performance. BTW I'm not saying Vue is not a good tool, I just don't feel it adds anything over React, some extremely experienced developers at my place have trialled Vue and it just turned out there was no benefit to using it in our projects over React. They felt a lot of it's popularity is down to it being less of a paradigm shift from Angular. Worth saying that we only work with API's so we're not having to deal with PHP. Edited April 6, 20179 yr by rbrtsmith
April 6, 20179 yr It seems like Vue may be a good option if you're using PHP CMS systems… As for filesize, React drops down considerably when you have the right environment variables setup (Production), it removes a whole load of development tools such as propTypes from the codebase. The resulting bundle size for React is then quite small (Around the 30k mark) which if you are server rendering too it's really just getting into the realms of premature optimisation and your load time performance bottlenecks will lie elsewhere. Then of course there's Preact and other stripped down alternatives if you really need to eek out some more performance. BTW I'm not saying Vue is not a good tool, I just don't feel it adds anything over React, some extremely experienced developers at my place have trialled Vue and it just turned out there was no benefit to using it in our projects over React. They felt a lot of it's popularity is down to it being less of a paradigm shift from Angular. Worth saying that we only work with API's so we're not having to deal with PHP. Yeah if I were building a JS app then I'd choose React. Vue does fill the gap nicely on PHP systems, Preact is also very good at this, I really like the work done there.
Create an account or sign in to comment