I don't want my web application to get caught up in the forever changing Front End frameworks and libraries. I just want something simple that any developer can work on that isn't always changing. I was thinking of going the route of EJS , Jquery, and Pjax on the frontend but not sure how this would work with a completely separate backend. I do want future versatility based on it's design if we decide to build a mobile app (Reasoning for API based). I realize that this is an SPA design and I can't seem to find any research on MPA restful websites. The website I'm making is a Reddit clone, so will be user interaction on the front end.
Sounds like you already made choices for your tech stack, especially front end, and you don't want to use an Javascript UI framework. Seem your question is:
but not sure how this would work with a completely separate backend.
And you are correct to use APIs as the interface between the front end and the backend. JQuery and Pjax both have support for Ajax, which can call API calls to the backend.
If you don't want to use a framework, it means "Vanilla JavaScript". You really don't need any framework to do fetch()+FormData API (AJAX) calls to your Node backend, however, on backend, I would recommend using at least Express. It's very lightweight http library on the top of of Node API.
Yes, Vanilla JS in frontend is very common in production and I use it often as well.
Here is my article which might give you some tips on how you can do Vanilla JS components without any frameworks.
Back-end
You can choose any framework/library to build your nodejs based back-end. It can be anything like
Express, FeathersJS, Hapi, Loopbacketc (if you're starting up I would suggest Express)So your backend NodeJS server provides some URLs (API end-points) for your front-end. URLs like:
https://api.something.com/getUsers https://api.something.com/loginUser https://api.something.com/updatePost https://api.something.com/createPost .Front-end
Now your client just calls these API. Just like back-end, the client can be made with any framework/library like
Jquery, ReactJS, VueJS, Angularetc. The client doesn't need to know which framework or library the back-end is using, as long as the URLs are always the same.I've been developing web apps in JQuery for around 4 years. Later I tried VueJS for 1 year. Now I've finally landed upon ReactJS on building my startup (mfy.im) with a small team. And I'm pretty happy with my decision.
Why I didn't choose JQuery:
Doesn't allow you to componentize
Hard to implement reactivity
The code doesn't easily scale as the project becomes bigger
While hiring new devs, they don't want to learn JQuery
Why I didn't choose Angular:
No virtual dom which makes apps slow
Constantly changing APIs and no backward compatibility
Why I left VueJS:
Fewer libraries comparing to JQuery and ReactJS
Libraries I used are very buggy
Hard to find developers while hiring
Why we choose ReactJS
A rock-solid framework built and maintained by Facebook
We didn't feel lack of libraries as in VueJS
The larger community, which means more libraries, better support
Didn't want to re-invent the wheel. I use ant.design/docs/react/introduce
Easy to find developers while hiring (you can get a lot of freelancers too)
Scaling code is smooth. Componentization, state management, reactivity everything is awesome!