2015-05-02 3 views
0

Я пытаюсь разместить 2 (или более) угловых приложения на одном сервере NodeJS. В основном то, что я хочу это:Несколько приложений AngularJS на том же сервере

  • mydomain.com/clientapp - конечный пользователь приложение, например: покупатель
  • mydomain.com/userapp - пользователь, который будет создавать контент. например: продавец с его продуктами
  • mydomain.com/admin - команда, которая может утвердить и удалить материал

Я использую UI-маршрутизатор ($ stateProvider) для создания маршрутов и загрузки страниц , Дело в том, что я хочу писать относительные пути в своих приложениях, чтобы, если мне нужно переименовать базовый url из clientapp на клиент, мне не нужно менять все URL-адреса моих приложений.

// this should be routed to admin/clients. Relative path 
state('listClients', { 
     url: '/clients', 
     templateUrl: 'modules/clientes/views/list-clients.client.view.html' 
    }). 

// this is how I am currently doing. 
state('listClients', { 
     url: '/admin/clients', 
     templateUrl: 'modules/clientes/views/list-clients.client.view.html' 
    }). 

Другая странная вещь, что происходит в том, что, когда я могу установить угловое приложение к URL-адресу, это убить последнее/и добавить #! непосредственно на имя приложения:

mydomain.com/app 
becomes mydomain.com/app#!/main // ugly as hell 
wanted mydomain.com/app/#!/main // little better 

Как я могу:

  • правильно установки AngularJS и пользовательский интерфейс маршрутное использовать базовый путь ко всем его запросам?
  • решить проблему уродливого url?
+1

У вас есть вопросы? – tpie

+0

yeap. Отредактировал вопрос. –

+1

У вас есть базовый элемент href = в разделе html head? – Cerad

ответ

0

1.You может попробовать ui.router.stateHelper

angular.module('admin', ['ui.router', 'ui.router.stateHelper']) 
    .config(function(stateHelperProvider){ 
    stateHelperProvider.setNestedState({ 
     name: 'admin', 
     url: '/admin', 
     templateUrl: 'admin.html', 
     children: [ 
     { 
      name: 'listClients', 
      url: '/clients', 
      templateUrl: 'clients.html' 
     } 
     ] 
    }); 
    }); 

когда вы хотите изменить модуль clientapp вам просто нужно изменить имя модуля и URL

angular.module('clientapp', ['ui.router', 'ui.router.stateHelper']) 
    .config(function(stateHelperProvider){ 
    stateHelperProvider.setNestedState({ 
     name: 'clientapp', 
     url: '/clientapp', 
     templateUrl: 'clientapp.html', 
     children: [ 
     { 
      name: 'listClients', 
      url: '/clients', 
      templateUrl: 'clients.html' 
     } 
     ] 
    }); 
    }); 

2. Что касается уродливой проблемы, я понятия не имею об этом. Простите за это.

+0

кажется хорошим решением. Проверяй это! –

+0

Вы можете попробовать '$ locationProvider'' angular.js' для slove уродливой проблемы. –

1

Первая App папки

папку
app.use('/', express.static(path.join(__dirname + '/app1'))); 

Второй App

app.use('/crm', express.static(path.join(__dirname + '/app1/app2'))); 

Готово! Наслаждайтесь

Смежные вопросы