ExpressJs - 让服务器子路由与 Angular 工厂 svcs 一起工作

ExpressJs - Getting Server Sub-routes to work with Angular factory svcs

为了便于维护,我想划分我的服务器路由:

server.js(启动应用程序):

require('./routes/allRoutes')(app);

allRoutes.js:

module.exports = function(app){
  //don't I need to pass (app) below? This will not work as is
  var Group1 = require('../routes/Group1/groupRoutes')(app), 
      Group2 = require('../routes/Group2/groupRoutes')(app);

  app.use('/group1', Group1);
  app.use('/group2', Group2);
}

groupRoutes.js:(在 Group1 文件夹中)

module.exports = function(app){
  //don't I need to pass (app) below? This will not work as is
  var SubGroup1 = require('../routes/Group1/subGroup1Route')(app);
      .....
  app.use('/subgroup1', SubGroup1);
}

subGroup1Routes.js:(在 Group1 文件夹中)

var FooCrtl = require('../../controllers/Group1/subGroup1/FooCtrl');

module.exports = function(app){
   app.get('/api/foo', FooCtrl.get);
   app.post('/api/foo', FooCtrl.post);
}

AngularJs FooSvcs:

....
   return {
        getFoo: function(){
            return $http({
                method: 'GET',

                url: '/group1/subgroup1/api/foo', <--- NOT WORKING

            });
        },

双重问题:

  1. 在服务器端,我不需要将 "app" 作为参数传递到路由树中吗?我试过了,但收到一个错误。

  2. 在上面的场景中,我的 angular 工厂的正确 url 是什么,因为我有什么不起作用。

好吧,这很难,但我终于解决了。

  1. 我希望在服务器端划分我的路由结构以在客户端 [angular] 端镜像我的模块结构是正确的方法。

  2. 我认为我需要创建一个 树结构 [<-- WRONG]我的服务器路由 NOT 这种情况。

示例:

客户端[angular]端:

public
 ---- app
    ---- module A folder
    ---- module B folder
    ---- module C folder

服务器 [express] 端结构:

server
 ---- routes
    ---- route A folder
        --- foo apis
        --- bar apis
    ---- route B folder
    ---- route C folder

foo api 服务器端结构:

var express = require('express'),
FooCtl = require('../../controllers/foo/FooCtl');

module.exports = function(app){
   app.get('/api/foo', FooCtl.get);
....
}

我不需要在该文件夹中创建 "parent route" 来收集我的路线。

相反,在我的根中使用“npm install --save wrench”,server.js:

var express = require('express'),
    path = require('path'),
    wrench = require('wrench');

wrench.readdirRecursive("routes", function (error, files) {
       if(files != null){
       files.forEach(function (file) {
               if (file.indexOf('.js') > -1 && file != undefined) {
                   fullPath = ('./routes/' + file);
                   console.log(fullPath);
                   require(fullPath)(app);
               }
       })} });

一切正常!