I'm working on a very niche social network for a client of mine and I've got the back end all nicely spec'd out and churning away with unit tests and POSTMAN api calls, but now it's time to write some html and JavaScript and I'm stuck on the direction I'd like to go.
My back end is WebAPI (OWIN) and an ArangoDB back end and the html and graphic design is all set, but it's time for execution.
Here's my thoughts:
1. Go full Angular and be done with it - I can write Angular apps in my sleep. I generally write web applications like time keeping systems, reporting portals and data management systems for clients and Angular is my go to but something about it doesn't feel write for a social media site. I could make it work, but the whole hashbang thing makes my skin crawl for some inexplicable reason.
2. Go ReactJS or VueJS and use MVC/Node/etc. to render the pages - This would make it less of a single page application, but I kind of like that. It's a little more traditional, but, to me, it seems like the pitfalls of this type of site are better dealt with with this tech stack. I can think of each page as it's own mini-spa and better manage the data flow.
I'm really proficient with JS and C# but I have a hard time making up my mind :)
Any thoughts would be super helpful.
Well since most people on this site seem to use either vue or react I will add a little diversity. I have worked with Angular and Ember and Meteorjs. I have read over Backbone, React, and Vue. I still can't get over react jsx files and how backwards that feels. I understand what they are trying to do but I like a MVC structure because it makes it easier for me to come back the next day and connect the dots of my project.
I have most experience with Meteor and can tell they will be a contender as more people try it out but I would try Ember. With ember-cli it makes it really easy to build up a site once you have the backend setup done. The only problem is like any framework you need to learn it and there are some small intrical problems you have to solve first to really understand the issues. But if you would like an example.
Express, Node, Mongo server public is where the production build is. Ember front end Important files are in app and config
My question is : Do you care about SEO? If yes, I would suggest going with React. I am not sure if Angular (2) supports Server Side Rendering, but when I was doing Angular it didn't have any such options. With React you can build universal apps where your views can be rendered on both server and client (Hashnode is built like this).
If you don't care about SEO then you can choose either Angular or React or (Vue as others suggest). As you are building this for a client and there must be a deadline, I would say go with what you are most comfortable with.
To me it makes more sense to build web apps in terms of reusable components and that's the reason I switched to React. Social media platforms can definitely be built using React. If you have time and are ready to experiment with unidirectional data flow concepts, flux architecture etc then definitely go ahead. You won't regret it. :)
A reactive framework would be my choice. I would go for Vue, because is so easy to use. But you may want React, because it is a lot more popular. In my opinion, React with Redux has the potential to cover all the needs in the front end in a clean and manageable way and it scales well. From what I read, Angular projects become hard to maintain as they grow. If you want your app to be SPA, you can do it with just about any framework these days. In the end, is about what you like. I like simple things. Just do not choose something obscure and a project that is not maintained.
but the whole hashbang thing makes my skin crawl for some inexplicable reason
You are not forced to used that URL structure in Angular, you can define your own URL structure that looks like natural REST urls.
See this article.
The same server config should work for Angular2.
Vue has capabilities for SPA if that's what you want https://github.com/vuejs/vue-router. ReactJS probably has too.
Myself I prefer to make components AJAX, but different pages traditional. The users barely notice the difference and IMO it's a lot easier to manage MPA (Multi Page Applications), but that might due to what prior experience one has.
I don't know enough to give you an answer to the question, sorry.
P Ξ D R O L U Z 🐿
Learn a few things on the way and I'm still learning. I like to take long walks to the fridge. Software Engineer from 🇵🇹 lives in 🇬🇧
Build REST Microservices API's with Go and the frontend with AureliaJS and all ur problems will be solved.