Actualmente estoy trabajando en una aplicación simple de NodeJS/AngularJS y mi proyecto actual se ve así:
/frontend/index.html <-- AngularJS home page /frontend/js/app.js <-- AngularJS app.js /backend/package.json<-- NodeJS package.json /backend/index.js <-- NodeJS scripty solo estoy sirviendo la API de backend con mi servidor NodeJS express mientras abro la parte de frontend directamente (file://.../frontend/index.html) en mi navegador.
¿Es una buena práctica servir tanto la "API de back-end" como la interfaz con NodeJS (por ejemplo, con dos instancias expresas en ejecución) y cómo organizaría el código?
mientras abro la parte frontal directamente (file://.../frontend/index.html) en mi navegador.
Eso es algo que solo puede hacer en su propia computadora local. No puede hacer eso para un servidor web normal que otras personas pueden usar. Por lo tanto, eso NO se considera una práctica viable para un servidor web regular diseñado para que lo usen otras personas en Internet.
Con una línea de código usando el middleware express.static() , puede hacer que su servidor node.js existente también sirva todos sus archivos HTML estáticos. No necesita un proceso separado para servir los archivos HTML. A gran escala, puede usar algo como un proxy NGINX para servir sus archivos HTML estáticos, pero no veo ninguna razón para que vaya en esa dirección ahora. En este punto, simplemente haga que su servidor node.js existente use express.static() para servir sus archivos estáticos y deje de usar cualquier referencia file:// .
¿Es una buena práctica servir tanto la "API de back-end" como la interfaz con NodeJS (por ejemplo, con dos instancias expresas en ejecución) y cómo organizaría el código?
No. No ha mostrado ninguna razón por la que necesitaría dos instancias de node.js. Simplemente use una instancia para servir tanto la API como los archivos HTML estáticos.