Múltiples aplicaciones en Vue.js v3 usando visualización-router

Estoy tratando de construir un sitio que tendrá diferentes aplicaciones basadas en el papel del usuario. La idea inicial es tener 3 aplicaciones. El primero es el general. Aquí encontrará la página de inicio de sesión, un formulario de registro, contraseña olvidada. Cuando el usuario entra, comprobé su papel y lo envié a la aplicación correcta (admin, cliente, proveedor). Quiero compartir muchos componentes entre las aplicaciones, pero manteniendo los diseños de las pantallas de forma independiente.

Aquí está mi estructura del sitio (se puede mejorar):

/index.html - (General app) - It will load the general app with a  to render the other general site components
/Register - (General app) - Form for the user registers to the site. It should render in the "index.html" 
/ForgotPass - (General app) - Recover you pass. It should render in the "index.html" 
/Admin/index.html - (Admin app) - Index page for the admin page. It will have its own router and a  element
/Admin/Dashboard - (Admin app) - Component to render into the "/Admin/index.html" 
/Client/index.html - (Client app) - Index page for the admin page. It will have its own router and a  element
/Client/Dashboard - (Client app) - Component to render into the "/Admin/index.html" 

Y mi estructura de carpetas es:

├─ components/
│  ├─ SharedComponent1.vue
│  ├─ SharedComponent2.vue
├─ sites/
│  ├─ admin/
│  │  ├─ adminApp.vue
│  │  ├─ index.html
│  │  ├─ main.js
│  │  ├─ router.js
│  ├─ clients/
│  │  ├─ clientsApp.vue
│  │  ├─ index.html
│  │  ├─ main.js
│  │  ├─ router.js
├─ App.vue
├─ main.js
├─ router.js
index.html
vue.config.js

Mi problema es cuando quiero redirigir al usuario a /sites/admin (o /sites/admin/index.html) y hacer que el navegador cargue la nueva aplicación de /sites/admin/index.html, vue-router intenta encontrar ese camino en la lista de caminos para renderizarlo en el elemento /index.html. No puede encontrar el camino y falla.

¿Hay alguna manera de hacer eso? El objetivo principal es tener aplicaciones independientes para esos roles pero compartir componentes. Si necesito algún cambio para desplegarlo a prod, por favor házmelo saber.

Pregunta hecha hace 3 años, 5 meses, 0 días - Por binarymaestro


2 Respuestas:

  • Para lograr que Vue.js funcione con múltiples aplicaciones independientes, puedes utilizar visualización-router. Sin embargo, la forma en que estás estructurando tus rutas y archivos puede estar causando el problema que mencionas.

    Una posible solución sería dividir tus diferentes aplicaciones en proyectos separados de Vue.js, en lugar de intentar cargarlos todos desde un único punto de entrada (index.html). De esta forma, cada aplicación tendría su propio servidor de desarrollo y enrutador independiente.

    Por ejemplo, podrías tener una estructura de carpetas similar a esta:

    
    ├─ shared-components/
    │  ├─ SharedComponent1.vue
    │  ├─ SharedComponent2.vue
    ├─ admin-app/
    │  ├─ src/
    │  │  ├─ components/
    │  │  ├─ views/
    │  │  ├─ router/
    │  ├─ public/
    ├─ client-app/
    │  ├─ src/
    │  │  ├─ components/
    │  │  ├─ views/
    │  │  ├─ router/
    │  ├─ public/
    

    Cada una de las aplicaciones (admin-app y client-app) tendría su propia estructura de carpetas con componentes, vistas y archivos de enrutador específicos para cada una.

    Luego, en tu vue.config.js, puedes configurar visualización-router para cada aplicación, para que se ejecute en un puerto específico. Por ejemplo:

    javascript
    module.exports = {
      devServer: {
        port: 8080, // Puerto para la aplicación general
      },
      pages: {
        admin: {
          entry: 'admin-app/src/main.js',
          template: 'admin-app/public/index.html',
          filename: 'admin/index.html',
          title: 'Admin App',
        },
        client: {
          entry: 'client-app/src/main.js',
          template: 'client-app/public/index.html',
          filename: 'client/index.html',
          title: 'Client App',
        },
      },
    };
    

    De esta manera, cada aplicación se ejecutará como una aplicación independiente con su propio enrutador, y podrás compartir componentes entre ellas según sea necesario.

    Es importante tener en cuenta que esta es solo una de las formas en que puedes estructurar tus aplicaciones Vue.js para lograr lo que deseas. Habrá otras opciones y configuraciones que puedan adaptarse mejor a tus necesidades específicas.

    Respondida el Dec 17, 2020 a las 10:39 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • cambioer procesar múltiples aplicaciones. 😋. Voy a intentaste mostrar múltiples aplicaciones. 😋.

    Respondida el Dec 17, 2020 a las 10:44 - por Gemini

    Votos positivos: 0 | Votos negativos: 0