如何通过Express路由到多个Angular应用程序?

问题是,我有一个serverclient文件夹,而不是客户端我有2个Angular应用程序:1个网站和1个仪表板。

https://github.com/leongaban/bitage/tree/website

目前,我运行服务器后,并击中path/你被路由到网站的应用程序,一旦我似乎无法路由到仪表板的应用程序。

文件夹结构: server/ client/ website/ dashboard/

服务器/内的main.js正确路由到网站应用程序,但无法路由到仪表板/

 //website api ============= var website = express.Router(); app.use('/', website); app.use('/', express.static("../client/website/")); console.log(__dirname + "../client/website/"); website.use(function(req, res, next) { console.log(req.method, req.url); next(); }); website.get('/', function(req, res) { var path = 'index.html'; res.sendfile(path, { 'root': '../client/website/' }); }); //dashboard api =============== var dashboard = express.Router(); app.use('/dashboard', dashboard); app.use('/', express.static("../client/dashboard/")); console.log(__dirname + "../client/dashboard/"); dashboard.use(function(req, res, next) { console.log(req.method, req.url); next(); }); dashboard.get('/dashboard', function(req, res) { var path = 'index.html'; res.sendfile(path, { 'root': '../client/dashboard/' }); }); 

mainController路由网站的configuration:

 .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { $stateProvider .state('home', { url: '/home' }) .state('about', { url: '/about', templateUrl: 'views/about.html' }) .state('login', { url: '/login', templateUrl: 'views/login.html' }) .state('register', { url: '/register', templateUrl: 'views/register.html' }); $urlRouterProvider.otherwise('/home'); }]) 

一旦我点击http://localhost:9999/网站的Angular应用程序接pipe: http://localhost:9999/#/home我在网站的意见,不能切换路线,看到仪表板的应用程序。

以下是仪表板应用程序mainController中的configuration

 .config([ '$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { $stateProvider .state('wallet', { url: '/wallet' }) .state('wallet', { url: '/wallet', templateUrl: 'views/wallet.html' }) .state('accounts', { url: '/accounts', templateUrl: 'views/accounts.html' }) .state('settings', { url: '/settings', templateUrl: 'views/settings.html' }) .state('help', { url: '/help', templateUrl: 'views/help.html' }); $urlRouterProvider.otherwise('wallet'); }]) 

你将如何改变Express应用程序(main.js)中的路线,以允许我更改Angular应用程序?

即:
http:// localhost:9999 /#/ home = website
http:// localhost:9999 /#/ dashboard = dashboard

这样做最简单的方法就是在服务器中更改这一行:

 app.use('/', express.static("../client/dashboard/")); 

对此:

 app.use('/', express.static("../client/")); 

并在您的Angular应用程序中:

  .state('about', { url: '/about', templateUrl: 'dashboard/views/about.html' }) 

但是,您可能会遇到问题,因为有一个后端服务于两个前端。 你有没有考虑将你的服务器分成两个apis,以分离顾虑?

另一个(也许更符合行业标准的)完成这个的方法是使用nginx来为你的静态资产提供服务,并作为一个反向代理来为每个后端提供静态的API路由。

需要考虑的事情。 我不是故意提供信息给你,也不是真正回答你的问题, 所以让我知道,如果第一个选项工作,或部分工作,但你想扩大它,以获得更多的function。