I suggest to separate (your option b).
- Front and back-end are totally separated
- You can replace one of them without problems in the other
- Use middleware, json responses and http status codes
- Use a framework for back-end too (for example Laravel or Lumen)
About routes ...
Your back-end has its own routes (endpoints).
Your front-end has its own routes (totally different), but should send GET/POST/PUT etc. requests to the back-end. The back-end returns (json) response, which will be parsed by the front-end.
Develop both separately! So you can use the back-end for third party later.