Модульная структура на Angular2 и Webpack

У меня есть проект, который логически разделен на 2 части: для авторизованных пользователей и не авторизован.

Есть моя структура:

  • уполномоченный
  • несанкционированный
  • сервисы
  • приложение.деталь.ts
  • торговец.ts
  • сапог.ts

приложение.деталь:

@Component({
               selector  : "body",
               template  : `<router-outlet></router-outlet>`,
               directives: [ROUTER_DIRECTIVES],
               providers : [AuthService, DefaultService, LoggerService]
           })
@Routes([
            {
                path     : "/auth/login",
                component: AuthComponent
            },
            {
                path     : "/",
                component: DefaultComponent
            }
        ])
export class AppComponent {}

Я хочу, чтобы неавторизованные и авторизованные модули были отделены и инкапсулированы друг от друга.
Службы каталогов являются общими для обоих модулей (logging, etc.)
Я использовал Webpack.

Вопрос в том, как переделать приложение.компонент так Webpack знал, когда ему нужно загрузить другой модуль?

Из webpack.конфиг.js:

entry: {
          "vendors": "./project/app/vendors.ts",
          "auth"   : "./project/app/unauthorized/auth.component.ts",
          "unauth" : "./project/app/authorized/default.component.ts",
          "style"  : "./project/sass/application.scss"
        }

Плагины:

new CommonsPlugin({
    minChunks: Infinity,
    name     : "common",
    chunks   : [
        "vendors",
        "auth",
        "unauth"
    ]
})

После сборки у меня есть 4 файла:

- auth.js
- unauth.js
- vendors.js
- common.js

Common имеет только структуру webpack по умолчанию, поставщики имеют все поставщики код.
Но auth.js и unauth.js имеют не только свой код, но почти всю структуру angular2, которая должна быть в поставщиках.js

1 ответ

  1. Моя рекомендация будет состоять в создании двух отдельных приложений. Если пользователь входит в систему, он перенаправляется в приложение. Если пользователь выходит из системы, он перенаправляется в приложение для выхода из системы.

    Я сделал монолитное приложение с логином в angular 1 с маршрутизацией, и это был кошмар. Angular 2 может быть лучше, но кажется гораздо менее сложным просто разделить их.